思路:
- 最小值用另一个栈存储
- 栈1存时就与栈2元素比较小于则存入,大于则重复存入栈2的元素
- 每次存入栈2的最小值与栈1的位置一样
代码实现:
import java.util.Stack;
public class Solution {
//用于栈的push 与 pop
Stack<Integer> stack1 = new Stack<Integer>();
//用于存储最小min
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node);
//空或者新元素较小,则入栈2
if(stack2.isEmpty() || stack2.peek() > node){
stack2.push(node);
}else{
//重复加入栈顶,保证两个栈长度一样
stack2.push(stack2.peek());
}
}
public void pop() {
//保证两个栈长度一样,只有每次比较的最小值位置一样
stack1.pop();
stack2.pop();
}
public int top() {
return stack1.peek();
}
public int min() {
return stack2.peek();
}
}