155. 最小栈 - 力扣(LeetCode) (leetcode-cn.com)
思路:
①用两个栈来实现最小栈的功能 stack用来存储元素,min用来存储当前stack中最小的元素
②push
当要存储一个元素时,stack直接存储,比较当前值和min中栈顶元素的值的大小,如果当前值较小,则将这个值也存入min中,否则再存一次min的栈顶元素
注意,如果min为空的话直接存储,当前值就是最小值
class MinStack {
Stack<Integer>stack;
Stack<Integer>min;
/** initialize your data structure here. */
public MinStack() {
stack=new Stack<>();
min=new Stack<>();
}
public void push(int val) {
stack.push(val);
if(min.isEmpty()){
min.push(val);
}else{
if(val<min.peek()){
min.push(val);
}else{
min.push(min.peek());
}
}
}
public void pop() {
stack.pop();
min.pop();
}
public int top() {
return stack.peek();
}
public int getMin() {
return min.peek();
}
}