/**
* 本题大体思路:
* 生成两个栈,一个栈stack1正常装数据,另一个栈stack2装当时最小的数据
* 比如:
* [7,6,5,8,3]
* 从第一个数据开始装入,
* stack1[7]
* stack27
* 第二个数据开始装入,
* stack1[7,6]
* stack27,6
* 第三个数据开始装入,
* stack1[7,6,5]
* stack27,6,5
* 第四个数据开始装入,
* stack1[7,6,5,8]
* stack27,6,5,5
* 第五个数据...
*/
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<>(); Stack<Integer> stack2 = new Stack<>(); public void push(int val) { stack1.push(val); if (stack2.isEmpty()) { stack2.push(val); } else if (stack2.peek() >= val) { stack2.push(val); } else { stack2.push(stack2.peek()); } } public void pop() { stack1.pop(); stack2.pop(); } public int top() { return stack1.peek(); } public int min() { return stack2.peek(); }
}