题目确实读了半天,最后才知道原来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_};
    }
}