155. 最小栈
155. 最小栈
这道题的重点是在获取更新最小值的时候,一定要加上<=,因为栈中可能为空;同时比较大小的时候要用equals来比较数值
题目:
题解:
class MinStack { //全局对象stack和用来存储最小的元素 private Stack<Integer> stack; private Stack<Integer> min_stack; public MinStack() { stack = new Stack<>(); min_stack = new Stack<>(); } public void push(int val) { stack.push(val); //这里要加上=,会导致min_stack为空 if(min_stack.isEmpty() || val <= min_stack.peek()){ min_stack.push(val); } } public void pop() { //如果最小的元素是当前要移除的元素 //.equals() 比较的是数值内容 if(stack.pop().equals(min_stack.peek())) { min_stack.pop(); } } public int top() { return stack.peek(); } public int getMin() { return min_stack.peek(); } } /** * Your MinStack object will be instantiated and called as such: * MinStack obj = new MinStack(); * obj.push(val); * obj.pop(); * int param_3 = obj.top(); * int param_4 = obj.getMin(); */