首先对于这种数据结构实现问题,我们都是先看了答案了。然后明白了思路后,就开始自己实现。于是当中犯了两个错误,尤其是第二个错误,甚是可怕。
Stack存的是Object类型,在进行值的比较时,怎么可以是用“==”来比较,//2这个错误怎么这么蠢!
更新:06/05/2016, 在leetcode上又做了一遍,发现第一个错误更可怕,而且又犯了, 同时必须要考虑stack为空的情况,下面的code必须得修改,添加如下类似,检查empty();
if(miniStack.empty()) {
return 0;
}
public class MinStack {
Stack<Integer> stack;
Stack<Integer> minStack;
public MinStack() {
// do initialize if necessary
stack = new Stack<>();
minStack = new Stack<>();
}
public void push(int number) {
// write your code here
stack.push(number);
if (minStack.isEmpty()) {
minStack.push(number);
//1 } else if (number < minStack.peek()) {
} else if (number <= minStack.peek()) {
minStack.push(number);
}
}
public int pop() {
// write your code here
//2 if (minStack.peek() == stack.peek()) {
if (minStack.peek().equals(stack.peek())) {
minStack.pop();
}
return stack.pop();
}
public int min() {
// write your code here
return minStack.peek();
}
}