题目
实现一个特殊的栈,在实现栈的基本功能上,再实现返回栈中最小元素的操作。
分析
可以使用两个栈,一个占当普通的栈stackData进行操作,另一个栈stackMin用于保存最小值(这个栈的元素大小从栈底到栈顶依次减小,当最小的弹出后次小值就成了zui小值)。
压入数据时
数据压入stackData,然后stackMin判断是否为空或者数据小于等于stackMin栈顶元素,如果为真,则压入stackMin,否则不作任何操作。
弹出数据时
stackData正常弹出,然后看这个值是否等于stackMin栈顶元素,即最小元素,如果为真,则stackMin弹出,否则不操作。
代码实现
import java.util.Stack;
public class StackWithGetMin {
private Stack<Integer> stackData = new Stack<>();
private Stack<Integer> stackMin = new Stack<>();
public void push(int val){
stackData