滑动窗口最大值
队列没有指定底层实现的话,默认是以deque为缺省情况下栈的底层结构(缺省值即为默认值)
deque容器
题目:
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。
返回 滑动窗口中的最大值 。
其实队列没有必要维护窗口里的所有元素,只需要维护有可能成为窗口里最大值的元素就可以了,同时保证队列里的元素数值是由大到小的
class Solution { public: class Myqueue { public: deque<int> que; void pop(int value)//滑动窗口前端 { if(!que.empty()&&value==que.front())//不一定每次都移除,可能在排序时已经移除 { que.pop_front(); } } void push(int value)//滑动窗口后端 { while(!que.empty()&& value >que.back())//排序的同时移除元素,保证队列为单调从大到小 { que.pop_back(); } que.push_back(value); } int front()//返回最前端数值,即为最大值 { return que.front(); } }; vector<int> maxSlidingWindow(vector<int>& nums, int k) { Myqueue que; vector<int> result;//储存最大值的数组 for(int i=0;i<k;i++)//先将前k个元素放入队列 { que.push(nums[i]); } result.push_back(que.front()); for(int i=k;i<nums.size();i++) { que.pop(nums[i-k]);//滑动窗口移除最前端元素 que.push(nums[i]);//滑动窗口加入最后面的元素 result.push_back(que.front());//记录对应最大值 } return result; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~