Java-设计getMin功能的栈(一个栈+数组实现)
设计getMin功能的栈
http://www.nowcoder.com/questionTerminal/c623426af02d4c189f92f2a99647bd34
思路
入栈和出栈操作用栈原有的push,pop就能实现,但是得到最小值需要一个数组遍历栈中的所有值,再排序取出最小值存入结果数组。
代码
public int[] getMinStack (int[][] op) { // write code here ArrayList<Integer> arrayList = new ArrayList<>(); //存储最小值的数组 if (op.length==0){ return null; } Stack<Integer> stack = new Stack<>(); //建立一个栈实现入栈出栈操作 for (int i=0;i<op.length;i++){ if (op[i][0]==1){ //入栈 stack.push(op[i][1]); } if (op[i][0]==2){ //出栈 stack.pop(); } if (op[i][0]==3){ //getMin操作 ArrayList<Integer> list = new ArrayList<>(); //创建数组存储栈中所有元素 for (int value: stack){ //遍历 list.add(value); } Collections.sort(list); //升序排序 arrayList.add(list.get(0)); //取出最小值 } } int[] result=new int[arrayList.size()]; //创建结果数组 for (int i=0;i<result.length;i++){ //遍历最小值数组给结果数组赋值 result[i]=arrayList.get(i); } return result; }