Java版《设计getMin功能的栈》

设计getMin功能的栈

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

1.两个栈,栈A入栈,栈B存储与栈A实时变化中最小的元素

import java.util.*;
public class Solution {
    Stack<Integer> stackA = new Stack<>();  //入栈的值存放在这
    Stack<Integer> stackB = new Stack<>();  //存放最小的值
    ArrayList<Integer> list = new ArrayList<>();
    public int[] getMinStack (int[][] op) {
        for(int[] opt:op){
            if(opt[0] == 1)
                push(opt[1]);   //为1的时候  则为入栈
            else if(opt[0] == 2)
                pop();    //为2的时候,出栈
            else
                list.add(getMin());
        }

        int[] res = new int[list.size()];
        for(int i = 0; i < list.size(); i++)
            res[i] = list.get(i);
        return res;
    }

    public void push(int value){
        stackA.push(value);
        if(stackB.isEmpty())
            stackB.push(value);
        else{
            if(value <= stackB.peek()){
                stackB.push(value);
            }
        }
    }

    public void pop(){
        int val = stackA.pop();
        if(val == stackB.peek())
            stackB.pop();
    }  
    public int getMin(){
        return stackB.peek();
    }
}

2.一个栈+一个数组也能维护

全部评论

相关推荐

12-03 23:38
复旦大学 Java
点赞 评论 收藏
分享
10-22 20:17
已编辑
门头沟学院 Python
敢逐云霄志:后端没92学历+大厂实习基本别想在秋招约面了,笔试可能都不会给你发,我双非本3段实习,一大,中,一小,中大厂笔试做了一堆,大厂就只有字节给面,其他全没动静,根本轮不到双非。
你觉得第一学历对求职有影...
点赞 评论 收藏
分享
代码飞升_不回私信人...:别这样贬低自己,降低预期,放平心态,跟昨天的自己比。做好自己,反而会效率更高心态更好,加油兄弟
点赞 评论 收藏
分享
评论
5
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务