@TOC
问题
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的getMin和最大元素的getMax函数。在该栈中,调用getMin、getMax、push及pop的时间复杂度都是O(1).。
解题思路
用辅助栈记住每次入栈的当前最小值/最大值:在入栈时,往辅助栈中加入当前最小值/最大值;出栈时,辅组栈也出栈一个元素。最小值/最大值从辅助栈中获取栈顶元素。
基础代码实现
import java.util.ArrayList;
import java.util.EmptyStackException;
import java.util.List;
public class MyStack {
private List<Integer> data = new ArrayList<Integer>(); //数据栈
private List<Integer> min = new ArrayList<Integer>(); //存放最小值的栈
private List<Integer> max = new ArrayList<Integer>(); //存放最大值的栈
public void push(int num) {
data.add(num);
if (min.size(