class Solution2 {
private Stack<Integer> stack1 = new Stack<Integer>();//用来存放数据
private Integer min = Integer.MAX_VALUE;//用来存放最小值
public void push(int value) {
if(stack1.empty()){
stack1.push(value);
min = value;
}
else{
stack1.push(value);
if(min > value){
min = value;
}
}
}
public void pop() {
stack1.pop();
}
public int top() {
return stack1.peek();
}
public int min() {
return min;
}
}
class Solution1 {
private Stack<Integer> stack1,stack2;
public void push(int value) {
stack1.push(value);
if(stack2.empty())
stack2.push(value);
else if(value<=stack2.peek())
{
stack2.push(value);
}
}
public void pop() {
if(stack1.peek()==stack2.peek())
stack2.pop();
stack1.pop();
}
public int top() {
return stack1.peek();
}
public int min() {
return stack2.peek();
}
}
由于要求是O(1)的复杂度,因此在存放的时候就需要保证最小的值的实时更新,这难度不大,主要是能不能想到这一点,存入数据的时候就进行最小值的判断,



京公网安备 11010502036488号