首页 > 其他分享 >剑指 Offer 59 - II. 队列的最大值

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

时间:2023-09-03 21:37:14浏览次数:64  
标签:59 Offer int max pop II value return public


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

就是题目 剑指 Offer 59 - I. 滑动窗口的最大值 需要实现的数据结构。

一个队列用于正常加入和删除数据,另一个队列用于维护最大值。

class MaxQueue {
    Deque<Integer> q = new ArrayDeque<>();
    Deque<Integer> q_max = new ArrayDeque<>();

    public MaxQueue() {

    }
    
    public int max_value() {
        if(q.isEmpty()) return -1;
        return q_max.peekFirst();
    }
    
    public void push_back(int value) {
        q.offerLast(value);
        while(!q_max.isEmpty() && q_max.peekLast() < value){
            q_max.pollLast();
        }
        q_max.offerLast(value);     
    }
    
    public int pop_front() {
        if(q.isEmpty()) return -1;
        int pop = q.pollFirst();
        if(pop == q_max.peekFirst()){
            q_max.pollFirst();
        }
        return pop;
    }
}


标签:59,Offer,int,max,pop,II,value,return,public
From: https://blog.51cto.com/u_16208057/7343322

相关文章

  • 剑指 Offer 58 - II. 左旋转字符串
    剑指Offer58-II.左旋转字符串翻转前n个字符翻转其余字符翻转所有字符classSolution{publicStringreverseLeftWords(Strings,intn){char[]ch=s.toCharArray();reverse(ch,0,n-1);reverse(ch,n,ch.length-1);rever......
  • 剑指 Offer 64. 求1+2+…+n
    剑指Offer64.求1+2+…+n使用逻辑运算符的短路效应代替终止条件。classSolution{intres=0;publicintsumNums(intn){booleanx=n>1&&sumNums(n-1)>0;res+=n;returnres;}}......
  • 剑指 Offer 60. n个骰子的点数
    剑指Offer60.n个骰子的点数动态规划:已知n-1个骰子的所有情况,再增加一个骰子,可推出n个骰子的所有情况。增加的一个骰子的点数只有1-6种可能,与n-1个骰子对应点数相乘,可得到n个骰子点数的一种情况,遍历所有情况即可。classSolution{publicdouble[]dicesProbability(intn)......
  • 剑指 Offer 06. 从尾到头打印链表
    剑指Offer06.从尾到头打印链表方法一顺序添加,再翻转。classSolution{publicint[]reversePrint(ListNodehead){ListNodeh=head;List<Integer>res=newArrayList<>();while(h!=null){res.add(h.val);h=......
  • 剑指 Offer 03. 数组中重复的数字
    剑指Offer03.数组中重复的数字利用题目的限制条件:所有数字都在0~n-1的范围内通过交互让数字和下标一一对应,如果有多个数字对应同一个下标,那就找到了答案。classSolution{publicintfindRepeatNumber(int[]nums){intn=nums.length;inti=0;......
  • 代码随想录算法训练营第二十九天| 491.递增子序列 46.全排列 47.全排列 II
     491.递增子序列   卡哥建议:本题和大家刚做过的 90.子集II 非常像,但又很不一样,很容易掉坑里。 https://programmercarl.com/0491.%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.html  视频讲解:https://www.bilibili.com/video/BV1EG4y1h78v  做题思路......
  • 剑指 Offer 62. 圆圈中最后剩下的数字(简单)
    题目:classSolution{public:intlastRemaining(intn,intm){intpos=0;for(inti=2;i<=n;i++){pos=(pos+m)%i;}returnpos;}};作者:想吃火锅的木易链接:https://leetcode.cn/problems/yuan-quan-zhong-z......
  • 剑指offer_20230803
    剑指Offer51.数组中的逆序对题目说明在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。解题思路1:暴力肯定是可行但是会超时的,就不用考虑了,但理论可行解题思路2:归并可以利用归并排序时的一个特性......
  • 跳跃游戏 II
    给定一个长度为n 的0索引整数数组nums。初始位置为nums[0]。每个元素nums[i] 表示从索引i 向前跳转的最大长度。换句话说,如果你在nums[i] 处,你可以跳转到任意nums[i+j] 处:0<=j<=nums[i] i+j<n返回到达 nums[n-1] 的最小跳跃次数。生成的测试......
  • 代码随想录算法训练营第二十八天| 93.复原IP地址 78.子集 90.子集II
     93.复原IP地址    卡哥建议:本期本来是很有难度的,不过 大家做完 分割回文串 之后,本题就容易很多了   题目链接/文章讲解:https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html   视频讲解:https://www.bilibili.com/video/BV1XP4......