leetcode Min Stack
阿新 • • 發佈:2018-12-06
Min Stack 題目:https://leetcode.com/problems/min-stack/
解題思路:建立兩個棧,一個作為普通的棧,另外一個棧每次棧頂存放最小的元素。
push: 首先比較要加入的元素與minStack 棧頂的元素的大小 x<minStack.peek() minStack.push(x) 普通棧在任何時候都要加入元素。
pop:首先比較普通棧的棧頂元素與minStack 棧頂的元素的大小 stack.peek()==minStack.peek() minStack.pop(x) 普通棧在任何時候都要pop。
top: 從普通棧的棧頂獲得元素
getMIn:從最小棧的棧頂獲得元素。
/** * 普通的棧 */ private Stack<Integer> stack=new Stack<>(); /** * minStack 存取棧中的最小元素 */ private Stack<Integer> minStack=new Stack<>(); /** initialize your data structure here. */ public MinStack() { } public void push(int x) { if(stack.isEmpty()|| x<minStack.peek()){ minStack.push(x); } stack.push(x); } public void pop() { if(stack.peek().equals(minStack.peek())){ minStack.pop(); } stack.pop(); } public int top() { return stack.peek(); } public int getMin() { return minStack.peek(); }