当前位置:网站首页>【剑指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;
}
};
边栏推荐
- 错误 AttributeError type object 'Callable' has no attribute '_abc_registry' 解决方案
- idea removes spark logs
- 编译型与解释型编程语言的区别
- The Internet of things application development trend
- 【模型部署与业务落地】基于量化芯片的损失分析
- 【HMS core】【Media】【视频编辑服务】 在线素材无法展示,一直Loading状态或是网络异常
- B.构造一个简单的数列(贪心)
- php中的ceil和floo以及round函数「建议收藏」
- Analysis and application of portrait segmentation technology
- C# 动态加载卸载 DLL
猜你喜欢
随机推荐
Phasecraft连下两城,助力英国量子技术商业化加速!
零基础可以转行软件测试吗 ?这篇文章告诉你
如何查找endnote文献中pdf文件的位置
Fuse bit of AVR study notes
小 P 周刊 Vol.13
State security organs conduct criminal arrest and summons review on Yang Zhiyuan, a suspect suspected of endangering national security
数据库恢复
LM2596有没有可以替代的?LM2576可以
MySQL性能指标TPS\QPS\IOPS如何压测?
Workaround without Project Facets
九州云出席领航者线上论坛,共话5G MEC边缘计算现状、挑战和未来
nVisual secondary development - Chapter 2 nVisual API operation guide Swagger use
卷积神经网络 基础
metaRTC5.0新版本支持mbedtls(PolarSSL)
职场漫谈:为什么越是内卷的行业越有人争着抢着往里冲?好奇怪的说...
"C pitfalls and pitfalls" reading summary
Qt的QItemDelegate使用
Crawler - action chain, xpath, coding platform use
量化细胞内的信息流:机器学习时代下的研究进展
解题-->在线OJ(十八)

![[LeetCode] 38. Appearance sequence](/img/d6/092796b57844d5d30f3ed123a1b98a.png)







