题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
解题方案
本题的重点在于min函数是要多次调用的,即不能使用一个变量来存储当前的最小值,所以在这里我使用了辅助栈作为最小值的保存。在存储数据栈的时候同步将最小栈存储,当当前传入的数据值小于当前最小值的时候我们让最小值入数据栈和最小值栈,当当前传入的数据值大于当前的最小值时,我们将当前值入数据栈,并将当前的最小值再次入最小值栈。
举例如下所示:
入栈顺序 3 5 2 8 6 1
数据的栈 3 5 2 8 6 1
最小值栈 3 3 2 2 2 1
import java.util.Stack;
public class Solution {
//当前栈
Stack<Integer> stack = new Stack