题目:栈 —(简单)— 包含min函数的栈

思路:
该题的主要考察点在于min函数的编写,可以额外利用一个栈minStack来保存最小值。对入栈的数字进行判断,若该数字小于等于minStack栈顶的数字,则将其入minStack栈,否则忽略。当我们进行弹栈操作时,对将要弹出的数字与minStack栈顶数字比较,若相等,则弹出minStack栈顶数字,否则忽略。
代码:
注:代码中用ArrayList模拟了栈操作,可以直接使用Stack或者LinkedList。
class MinStack {
private int index;
private int minIndex;
private ArrayList<Integer> list;
private ArrayList<Integer> minStack;
public MinStack() {
index = -1;
minIndex = -1;
list = new ArrayList<>();
minStack = new ArrayList<>();
}
public void push(int x) {
index++;
list.add(index, x);
if (minIndex == -1) {
minIndex++;
minStack.add(minIndex, x);
} else {
if (x <= minStack.get(minIndex)) {
minIndex++;
minStack.add(minIndex, x);
}
}
}
public void pop() {
if (list.get(index).equals(minStack.get(minIndex))) {
minIndex--;
}
index--;
}
public int top() {
return list.get(index);
}
public int min() {
return minStack.get(minIndex);
}
}
版权声明:本文为qq_40588565原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。