题解 | #设计getMin功能的栈#
设计getMin功能的栈
http://www.nowcoder.com/practice/c623426af02d4c189f92f2a99647bd34
题目确实读了半天,最后才知道原来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_}; } }