两个栈,一个存所有数据,一个维护栈顶最小。
import java.util.Stack;public class Solution {// 元素栈;Stack<Integer> data = new Stack<Integer>();// 辅助栈;Stack<Integer> min = new Stack<Integer>();Integer change = null;public void push(int node) {if (change != null) {if (node <= change) {change = node;min.push(change);}data.push(node);} else {change = node;min.push(change);data.push(change);}}public void pop() {int num1 = data.pop();int num2 = min.pop();if (num1 != num2) {min.push(num2);}}public int top() {return data.peek();}public int min() {return min.peek();}}
class Solution {public:stack<int> data;stack<int> dataMin;void push(int value) {if (!dataMin.empty()) {int curMin = dataMin.top();if (value < curMin) {dataMin.push(value);}} else {dataMin.push(value);}data.push(value);}void pop() {int curTop = data.top();data.pop();int curMin = dataMin.top();dataMin.pop();if (curMin != curTop) {dataMin.push(curMin);}}int top() {return data.top();}int min() {return dataMin.top();}};
