首页 > 其他分享 >剑指 Offer 59 - I. 滑动窗口的最大值(困难)

剑指 Offer 59 - I. 滑动窗口的最大值(困难)

时间:2023-07-28 21:33:54浏览次数:34  
标签:59 Offer 队列 最大值 nums que result 窗口

题目:

class Solution {
public:
    vector<int> maxSlidingWindow(vector<int>& nums, int k) {
        vector<int> result;
        if(nums.size()==0) return result;
        deque<int> que;                         //要维护这样一个队列:队列能够自动弹出和压入元素,队列首部到尾部递减。要注意存放的元素是数组的下表。
        for(int i=0;i<nums.size();i++){          
            while(!que.empty()&&nums[que.back()]<=nums[i]){     //要保证队列首部到尾部递减,保证了队列首部是当前(每一个)窗口的最大值
                que.pop_back();
            }
            if(!que.empty()&&i-que.front()+1>k){               //队列最大值不在窗口范围内,弹出  
                que.pop_front();
            }
            que.push_back(i);
            if(i>=k-1){                                       //当遍历元素等于窗口数时开始记录最大值和滑动窗口
                result.push_back(nums[que.front()]);
            }
        }
        return result;
    }
};

标签:59,Offer,队列,最大值,nums,que,result,窗口
From: https://www.cnblogs.com/fly-smart/p/17588944.html

相关文章

  • 代码随想录算法训练营第二天| LeetCode 977.有序数组的平方 ,209.长度最小的子数组 ,59.
    977.有序数组的平方     题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/    文章讲解:https://programmercarl.com/0977.%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E5%B9%B3%E6%96%B9.html    视频讲解: https://www.bili......
  • 剑指 Offer 09. 用两个栈实现队列(简单)
    题目:classCQueue{public:stack<int>st1;stack<int>st2;CQueue(){}voidappendTail(intvalue){st1.push(value);}intdeleteHead(){if(st1.empty()&&st2.empty())return-1;......
  • Atcoder ABC259H Yet Another Path Counting
    首先可以想到有组合数的方法:令起点为\((x1,y1)\),终点为\((x2,y2)\),则路径方案数就为\(\binom{x2+y2-x1-y1}{x2-x1}\),这样设有\(k\)个相同颜色的点,时间复杂度就为\(O(k^2)\)。再考虑到还有\(\text{DP}\)方法:令\(f_{x,y}\)为走到\((x,y)\)的方案数,不限制......
  • 剑指 Offer 58 - I. 翻转单词顺序(简单)(简单个屁!)
    题目:classSolution{public:stringreverseWords(strings){//该方法利用递归栈的逆序将单词逆序stringword;//保存一个完整的单词if(s.empty())returnword;inti=0;while......
  • 科技爱好者周刊(第 259 期):如何免费使用 ChatGPT
    这里记录每周值得分享的科技内容,周五发布。([公告]下周端午节假期,周刊暂停一次。)本杂志开源,欢迎投稿。另有《谁在招人》服务,发布程序员招聘信息。合作请邮件联系([email protected])。封面图广东韶关的云门山景区,有一个人工瀑布,高达168米。如果它的水源引自山泉,那倒还好,如果......
  • P8859 冒泡排序
    我回来了。参考:https://www.luogu.com.cn/blog/_post/509374、https://www.luogu.com.cn/blog/_post/510710。考虑type1,注意到\(1\)是不能被超越的,且一个数操作多次不优,因此第一步操作\(1\)不劣。因此从小到大归位每个数不劣,答案即为总数减去前缀\(\max\)的数目。从小到......
  • 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面(简单)
    题目:classSolution{public:vector<int>exchange(vector<int>&nums){for(inti=0,j=nums.size()-1;i<j;i++){if(nums[i]%2==0){//从i前开始,遇到偶数开始处理while(nums[j]%2==0&&am......
  • 获取生成数组中的最大值
    给你一个整数n。按下述规则生成一个长度为n+1的数组nums:nums[0]=0nums[1]=1当2<=2*i<=n时,nums[2*i]=nums[i]当2<=2*i+1<=n时,nums[2*i+1]=nums[i]+nums[i+1]返回生成数组nums中的最大值。示例1:输入:n=7输出:3解释:根据......
  • 剑指offer--二叉树
    第3题:二叉搜索树的第k个节点描述给定一棵结点数为n的二叉搜索树,请找出其中的第k小的TreeNode结点值。返回第k小的节点值即可不能查找的情况,如二叉树为空,则返回-1,或者k大于n等等,也返回-1保证n个节点的值不一样思路递归中序遍历二叉搜索树:左子树的元素都小于根节点,右......
  • 13个offer,8家SSP,谈谈我的秋招经验
    公众号“夕小瑶的卖萌屋”,专业带逛互联网算法圈的神操作-----》我是传送门关注后,回复以下口令:回复【789】:领取深度学习全栈手册(含NLP、CV海量综述、必刷论文解读)回复【入群】:加入卖萌屋深度学习/NLP/CV/搜广推等方向的技术交流与内推社群(大V、顶会审稿人云集)回复【0511】:领取算法......