目录
题目
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
push(x) – Push element x onto stack.
pop() – Removes the element on top of the stack.
top() – Get the top element.
getMin() – Retrieve the minimum element in the stack.
Example MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); –> Returns -3. minStack.pop(); minStack.top(); –> Returns 0. minStack.getMin(); –> Returns -2.
解决方案 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 public class MinStack { private List<Integer> list; private int min = 2147483647 ; public MinStack () { list = new ArrayList<>(); } public void push (int x) { list.add(x); if (list.size() == 1 ) { min = x; } else { if (x < min) min = x; } } public void pop () { list.remove(list.size() - 1 ); if (list.size() > 0 ){ int tmp = list.get(0 ); for (int i = 1 ; i < list.size(); i++){ if (list.get(i) < tmp){ tmp = list.get(i); } } min = tmp; } } public int top () { return list.get(list.size() - 1 ); } public int getMin () { return list.size() == 0 ? 0 : min; } } * Your MinStack object will be instantiated and called as such: * MinStack obj = new MinStack(); * obj.push(x); * obj.pop(); * int param_3 = obj.top(); * int param_4 = obj.getMin(); */
注意事项
按照堆栈的定义依次实现各方法。
push()操作时,压入元素的同时要更新min的值;getMin()操作时,直接返回min的值;pop()操作时,弹出元素的同时要记得更新min的值。