[LeetCode] 155. Min Stack Java
题目:
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.
题意及分析:实现一个stack,要求有push,pop,top功能,还要有一个返回stack最小值的函数(要在常量时间里返回这个值)。在这里我用一个LinkList来实现stack,具体看下面代码。对于最小值,在每次添加或者删除的时候记录即可,这样就能在常量时间获得stack的最小值。
代码:
public class MinStack {
/** initialize your data structure here. */
LinkedList<Integer> linkedList=new LinkedList<>();
int min=Integer.MAX_VALUE;
/** initialize your data structure here. */
public MinStack() {
}
public void push(int x) {
linkedList.add(x);
if(x<min)
min=x;
}
public void pop() {
if(min<linkedList.getLast()) //min不变
linkedList.removeLast();
else{
linkedList.removeLast();
min=Integer.MAX_VALUE;
for(int i=0;i<linkedList.size();i++){
if(linkedList.get(i)<min)
min=linkedList.get(i);
}
}
}
public int top() {
return linkedList.getLast();
}
public int getMin() {
return 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();
*/

浙公网安备 33010602011771号