LeetCode155——最小棧
阿新 • • 發佈:2019-01-12
我的LeetCode程式碼倉:https://github.com/617076674/LeetCode
原題連結:https://leetcode-cn.com/problems/min-stack/description/
題目描述:
知識點:棧
思路:用一個int型成員變數min記錄當前棧中的最小值
push(x)的時間複雜度是O(1)。
pop()操作由於要更新最小值min,其時間複雜度是O(n),其中n為棧中的元素個數。
top()的時間複雜度是O(1)。
getMin()的時間複雜度是O(1)。
JAVA程式碼:
public class MinStack { private LinkedList<Integer> stack; List<Integer> array; int min; public MinStack() { stack = new LinkedList<>(); array = new ArrayList<>(); min = Integer.MAX_VALUE; } public void push(int x) { stack.push(x); array.add(x); min = Math.min(min, x); } public void pop() { int num = stack.pop(); array.remove(array.size() - 1); if(array.size() > 0) { min = array.get(0); for (int i = 0; i < array.size(); i++) { if(min > array.get(i)) { min = array.get(i); } } }else { min = Integer.MAX_VALUE; } } public int top() { return stack.peek(); } public int getMin() { return min; } }
LeetCode解題報告: