思路
入栈和出栈操作用栈原有的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;
}
京公网安备 11010502036488号