题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
思路
用两个栈实现。
一个主栈,一个辅助栈,每次添加元素时始终将当前最小的元素放到辅助栈里。
也就是说,除了第一次,每次 push 进辅助栈的都是要 push 的元素和当前辅助栈 peek 出的元素的最小值。
import java.util.Stack;
public class Solution {
Stack<Integer> mainStack = new Stack<>();
Stack<Integer> helpStack = new Stack<>();
public void push(int node) {
mainStack.push(node);
if (helpStack.isEmpty()) {
helpStack.push(node);
} else {
helpStack.push(Math.min(node, helpStack.peek()));
}
}
public void pop() {
mainStack.pop();
helpStack.pop();
}
public int top() {
return helpStack.peek();
}
public int min() {
return helpStack.peek();
}
}