题解 | #设计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_};
    }
}
全部评论

相关推荐

用户64975461947315:这不很正常吗,2个月开实习证明,这个薪资也还算合理,深圳Java好多150不包吃不包住呢,而且也提前和你说了没有转正机会,现在贼多牛马公司骗你说毕业转正,你辛辛苦苦干了半年拿到毕业证,后面和你说没hc了😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务