题解 | #包含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();
}
}
基本思路
构造两个栈,一个正常的栈,存放放入的数据,一个递减栈,如果当前压入的值比当前递减栈的栈顶值大,则不压入,因为不可能是当前及以后的栈的最小值
查看13道真题和解析