题目确实读了半天,最后才知道原来getMin是不会出栈的。
也就是判断每个元素的第一个元素是什么操作,如果是出栈或者getMin,就直接做对应的操作,就不需要第二个元素。
public class Solution {
/**
* return a array which include all ans for op3
* @param op int整型二维数组 operator
* @return int整型一维数组
*/
public int[] getMinStack (int[][] op) {
// write code here
ArrayList<Integer> stack = new ArrayList<>();
ArrayList<Integer> resu = new ArrayList<>();
for (int[] ints : op) {
if (ints[0] == 1) {
stack.add(0, ints[1]);
} else if (ints[0] == 2) {
stack.remove(0);
} else {
assert ints[0] == 3;
int[] min = getMinValue(stack);
resu.add(min[1]);
// stack.remove(min[0]);
}
}
int[] res = new int[resu.size()];
for (int i = 0; i < resu.size(); i++) {
res[i] = resu.get(i);
}
return res;
}
private int[] getMinValue(ArrayList<Integer> stack) {
int min_ = stack.get(0);
int min_idx = 0;
for (int i=0; i< stack.size(); i++) {
if (min_ > stack.get(i)) {
min_ = stack.get(i);
min_idx = i;
}
}
return new int[]{min_idx, min_};
}
} 
京公网安备 11010502036488号