package meituan;import java.util.Stack;/** * 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的 min 函数。 * 借助辅助栈,辅助栈中存储,到当前深度时,data 栈中的最小值。 */public class Solution_minstack { // 数据栈 Stack<Integer> dataStack = new Stack<>(); Stack<Integer> minStack = new Stack<>(); Integer temp = null; // 每次压入数据栈数据与最小数据进行比较, // 如果更小,存入数据栈同时,存入辅助栈,并且最小值设置为该数据 public void push(int node){ dataStack.push(node); if(minStack.isEmpty()){ minStack.push(node); temp = node; } else{ temp = minStack.peek(); if(node <= temp){ minStack.push(node); temp = node; } else { // 依然是原来那个数更小,继续存入该最小值 minStack.push(temp); } } } public void pop(){ dataStack.pop(); minStack.pop(); } public int top(){ return dataStack.peek(); } public int min(){ return minStack.peek(); }}