题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度都是O(1)。
解题思路:难点在于获取min,需要一个辅助栈,该栈中存储当前栈最小的元素。
import java.util.ArrayList;
import java.util.List;
public class stackSolution {
List<Integer> list = new ArrayList();
List<Integer> listMin = new ArrayList();
public void push(int number){
if(list.isEmpty()) return;
list.add(number);
if(list.isEmpty()) listMin.add(number);
else if(number<listMin.get(listMin.size()-1)) listMin.add(number);
else listMin.add(listMin.get(listMin.size()-1));
}
public int pop(){
if(list.isEmpty()) return -1;
int top = list.get(list.size()-1);
list.remove(list.size()-1);
listMin.remove(listMin.size()-1);
return top;
}
public int getmin(){
return listMin.get(listMin.size()-1);
}
}