题解 | #包含min函数的栈# | 两个栈
包含min函数的栈
https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49
import java.util.*; import java.util.Stack; public class Solution { /** * 两个栈 一个用于一直往里面放元素 另一个构造递减的栈 */ Stack<Integer> mainStack = new Stack<>(); Stack<Integer> otherStack = new Stack<>(); public void push(int node) { if (otherStack.isEmpty() || otherStack.peek() >= node) { otherStack.push(node); } mainStack.push(node); } public void pop() { Integer pop = mainStack.pop(); if (pop.equals(otherStack.peek())) { otherStack.pop(); } } public int top() { return mainStack.peek(); } public int min() { return otherStack.peek(); } }
基本思路
构造两个栈,一个正常的栈,存放放入的数据,一个递减栈,如果当前压入的值比当前递减栈的栈顶值大,则不压入,因为不可能是当前及以后的栈的最小值