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;
}
全部评论

相关推荐

Java抽象带篮子:难蚌,点进图片上面就是我的大头😆
点赞 评论 收藏
分享
10-30 23:23
已编辑
中山大学 Web前端
去B座二楼砸水泥地:这无论是个人素质还是专业素质都👇拉满了吧
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务