当前位置:网站首页>【剑指offer59】队列的最大值
【剑指offer59】队列的最大值
2022-08-04 14:15:00 【星光技术人】
【剑指offer59】队列的最大值

题目辨析:这里的操作pop_front和push_back就是常规双向队列的意义,就是按照先进先出的规则来进行,唯一要做的是,需要实时最新队列的最大元素;
解题技巧:
解题技巧维护一个双向队列,使得队首元素始终是目前队列的最大元素code
class MaxQueue {
public:
deque<int> que;
deque<int> que_M;
MaxQueue() {
}
int max_value() {
if(que.empty())
return -1;
return que_M.front();
}
void push_back(int value) {
que.push_back(value);
while(que_M.size()>0 && que_M.back()<value)
que_M.pop_back();
que_M.push_back(value);
return;
}
int pop_front() {
if(que.empty())
return -1;
int temp = que.front();
if(temp == que_M.front())
que_M.pop_front();
que.pop_front();
return temp;
}
};
- 延申
维护双向队列的最大元素这个技巧在求滑动数组的最大值的时候运用的淋漓尽致

- code
class Solution {
public:
vector<int> maxSlidingWindow(vector<int>& nums, int k) {
deque<int> que;
vector<int> res;
if(nums.size()==1)
return {
nums[0]};
if(nums.size()<=k)
return {
nums[distance(nums.begin(), max_element(nums.begin(),nums.end()))]};
for(int i=0;i<k;i++)
{
while(!que.empty() && que.back() < nums[i])
que.pop_back();
que.push_back(nums[i]);
}
res.push_back(que.front());
for(int i=k;i<nums.size();i++)
{
if(que.front()==nums[i-k])
que.pop_front();
while(!que.empty() && que.back() < nums[i])
que.pop_back();
que.push_back(nums[i]);
res.push_back(que.front());
}
return res;
}
};
边栏推荐
- Lecture 4 SVN
- CCF GLCC officially opened | Kyushu Cloud open source experts bring generous bonuses to help universities promote open source
- oracle+RAC+linux5.1所需要安装的包
- ssm学习心得(完结篇
- idea永久激活教程(新版)
- 数据库恢复
- 【无标题】
- "C pitfalls and pitfalls" reading summary
- Oracle RAC环境下vip/public/private IP的区别
- 将 Sentinel 熔断限流规则持久化到 Nacos 配置中心
猜你喜欢
随机推荐
Unity插件:使用PopulationSystem制作行走交流的路人
《C 陷阱与缺陷 》阅读概要
节省50%成本!京东云重磅发布新一代混合CDN产品
metaRTC5.0新版本支持mbedtls(PolarSSL)
第四讲 SVN
中大型商业银行堡垒机升级改造就用行云管家!必看!
leetcode 48. Rotate Image (Medium)
Rust 从入门到精通04-变量
MPLS experiment
阿里老鸟终于把测试用例怎么写说的明明白白了,小鸟必看
集合划分差最小问题(01背包)
【HMS core】【Media】【视频编辑服务】 在线素材无法展示,一直Loading状态或是网络异常
大势所趋之下的nft拍卖,未来艺术品的新赋能
【LeetCode】38、外观数列
自监督学习未来是掩码自编码器?KAIST最新《自监督学习掩码自编码器》研究进展
How to Identify Asynchronous I/O Bottlenecks
How to install postgresql and configure remote access in ubuntu environment
The Internet of things application development trend
【问题解决】QT更新组件出现 “要继续此操作,至少需要一个有效且已启用的储存库”
Map common traversal methods - keySet and entrySet









