/**
* 本题大体思路:
* 生成两个栈,一个栈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();
}}

京公网安备 11010502036488号