Java-设计getMin功能的栈(一个栈+数组实现)

设计getMin功能的栈

http://www.nowcoder.com/questionTerminal/c623426af02d4c189f92f2a99647bd34

思路
入栈和出栈操作用栈原有的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;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-20 19:57
已编辑
某大厂 golang工程师 23.0k*16.0, 2k房补,年终大概率能拿到
点赞 评论 收藏
分享
10-18 13:01
已编辑
西安理工大学 C++
小米内推大使:建议技能还是放上面吧,hr和技术面试官第一眼想看的应该是技能点和他们岗位是否匹配
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务