题解 | #包含min函数的栈#

包含min函数的栈

http://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49

方案1:借助双栈来解决

import java.util.*;

public class Solution {
        Stack<Integer> normal=new Stack();
        Stack<Integer> minVal=new Stack();

        public void push(int value){
            if(minVal.isEmpty()||value<minVal.peek()){
                minVal.push(value);
            }else{
                minVal.push(minVal.peek());
            }
            normal.push(value);
        }

        public void pop(){
            if(!normal.isEmpty()&&!minVal.isEmpty()){
                normal.pop();
                minVal.pop();
            }
        }

        public int top(){
            int res=-1;
            if(!normal.isEmpty()){
                res=normal.peek();
            }
            return res;
        }

        public int min(){
            int res=-1;
            if(!minVal.isEmpty()){
                res=minVal.peek();
            }
            return res;
        }
}

方案2:借助栈和优先级队列来解决

import java.util.*;

public class Solution {
    Stack<Integer> s=new Stack();
    Queue<Integer> q=new PriorityQueue();
    public void push(int node) {
        s.push(node);
        q.offer(node);
    }
    
    public void pop() {
        if(!s.isEmpty()){
            q.remove(s.pop());
        }
    }
    
    public int top() {
        if(!s.isEmpty()){
            return s.peek();
        }
        return -1;
    }
    
    public int min() {
        return q.peek();
    }
}
全部评论

相关推荐

落叶随风呀:学校不好就放两栏,专业能力往前移, 政治面貌不是党员不如不写,籍贯湖南衡阳,或者湖南,浅尝辄止 基本信息排版不够美观,没有对齐 简历上花里胡哨的东西去掉 项目我不评价,因为我能力有限,且对mcu了解不足 但是这份简历掌握的水平,你可以海投试试,工作没问题但是工资应该不会高,因为搞mcu的小公司多
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务