当前位置:网站首页>【剑指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;
}
};
边栏推荐
- vcl啥意思_oval
- 《中国综合算力指数》《中国算力白皮书》《中国存力白皮书》《中国运力白皮书》在首届算力大会上重磅发出
- 【无标题】
- 编译型与解释型编程语言的区别
- CCF GLCC officially opened | Kyushu Cloud open source experts bring generous bonuses to help universities promote open source
- 【模型部署与业务落地】基于量化芯片的损失分析
- oracle+RAC+linux5.1所需要安装的包
- Almost all known protein structures in the world are open sourced by DeepMind
- Unity插件:使用PopulationSystem制作行走交流的路人
- NPDP|作为产品经理,如何快速提升自身业务素养?
猜你喜欢

zabbix自定义图形

考研上岸又转行软件测试,从5k到13k完美逆袭,杭州校区小哥哥拒绝平庸终圆梦!

Execution failed for task ‘:xxx:generateReleaseRFile‘.

idea permanent activation tutorial (new version)

【 HMS core 】 【 Media 】 online video editing service 】 【 material can't show, or network anomalies have been Loading state

开放麒麟 openKylin 版本规划敲定:10 月发布 0.9 版并开启公测,12 月发布 1.0 版

SLAM 04.视觉里程计-1-相机模型

广告电商系统开发功能只订单处理

Lixia Action | Kyushu Yunzhang Jinnan: Open source is not a movement for a few people, popularization is the source

metaRTC5.0新版本支持mbedtls(PolarSSL)
随机推荐
零基础可以转行软件测试吗 ?这篇文章告诉你
大势所趋之下的nft拍卖,未来艺术品的新赋能
七夕当然要学会SQL优化好早点下班去找对象
南瓜科学产品升级 开启益智探索新篇章
卷积神经网络 基础
[深入研究4G/5G/6G专题-50]: URLLC-16-《3GPP URLLC相关协议、规范、技术原理深度解读》-10-高可靠性技术-1-低编码率编码调制方案MCS与高可靠性DRB
[Opportunity Enlightenment-60]: "Soldiers, Stupid Ways"-1- Opening: "Death" and "Life" are the way of heaven
博途1200/1500PLC斜坡指令RAMP(带暂停功能)
Win11勒索软件防护怎么打开?Win11安全中心勒索软件防护如何设置
Button control switch 4017 digital circuit chip
Execution failed for task ‘:xxx:generateReleaseRFile‘.
How to Identify Asynchronous I/O Bottlenecks
[机缘参悟-60]:《兵者,诡道也》-1-开篇:“死“与“生“都是天道
odoo15 大部分模块都用的附件整理成一独立模块
编程思想_编程有必要给孩子学吗?
Problem solving-->Online OJ (18)
基于 Next.js实现在线Excel
Lixia Action | Kyushu Yunzhang Jinnan: Open source is not a movement for a few people, popularization is the source
化繁为简,聊一聊复制状态机系统架构抽象
解题-->在线OJ(十八)