实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。
你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。
您在真实的面试中是否遇到过这个题?
Yes
样例
如下操作:push(1),pop(),push(2),push(3),min(), push(1),min() 返回 1,2,1
注意
如果堆栈中没有数字则不能进行min方法的调用
标签 Expand
相关题目 Expand
你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。
您在真实的面试中是否遇到过这个题?
Yes
样例
如下操作:push(1),pop(),push(2),push(3),min(), push(1),min() 返回 1,2,1
注意
如果堆栈中没有数字则不能进行min方法的调用
标签 Expand
相关题目 Expand
解题思路:
用2个stack来实现
public class Solution {
private Stack<Integer> minstack ;
private Stack<Integer> stack;
public Solution() {
// do initialize if necessary
stack = new Stack<>();
minstack = new Stack<>();
}
public void push(int number) {
// write your code here
if(minstack.isEmpty()||number<=minstack.peek())
minstack.push(number);
stack.push(number);
}
public int pop() {
// write your code here
if(stack.peek().equals(minstack.peek())){
minstack.pop();
}
return stack.pop();
}
public int min() {
// write your code here
return minstack.peek();
}
}