栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

剑指 Offer 59 - II. 队列的最大值

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

剑指 Offer 59 - II. 队列的最大值

参考:
https://leetcode-cn.com/problems/dui-lie-de-zui-da-zhi-lcof/solution/ru-he-jie-jue-o1-fu-za-du-de-api-she-ji-ti-by-z1m/
主要思路就是 创建两个队列,一个是先进先出队列,一个是双向队列
普通队里用来执行pop 和push
双向队列用来执行最大值的存放 如果加入的数值大于双向队列的最后元素,就将该元素从双向队列的从末尾弹出,直到双向队列的末尾元素大于该数值,就将数值从后面放入双向队列
具体思路看注解

public class Offer59 {
    
    Queue queue;
    Deque deque;

    public Offer59() {
        queue = new linkedList();
        deque = new linkedList();
    }

    
    public int max_value() {
        if (deque.isEmpty()) return -1;
        return deque.getFirst();
    }

    
    public void push_back(int value) {
        queue.add(value);
        
        while (!deque.isEmpty() && value > deque.peekLast()){
            deque.removeLast();
        }
        deque.addLast(value);
    }

    
    public int pop_front() {
        if (queue.isEmpty()) return -1;
        int temp = queue.peek();
        if (queue.peek() == deque.peekFirst()) deque.removeFirst();
        queue.remove();
        return temp;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/643024.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号