无标题无名氏No.63555867 返回主串
2024-08-24(六)16:22:56 ID:2B1rYg7 回应
路过的肥哥,可以帮小肥看看代码吗( ›´ω`‹ )
力扣239:滑动窗口最大值c++
无标题无名氏No.63555871
2024-08-24(六)16:23:21 ID: 2B1rYg7 (PO主)
https://leetcode-cn.com/problems/sliding-window-maximum/
无标题无名氏No.63555883
2024-08-24(六)16:24:10 ID: 2B1rYg7 (PO主)
class Solution {
public:
vector<int> maxAltitude(vector<int>& heights, int limit) {
vector<int> res;
//为空的时候
if(heights.empty()) return heights;
//limit为1的时候
if(limit==1) return heights;
deque<int> d;
//特殊考虑,刚开始d为空的时候
if(d.empty()){
int max=0;
for(int i=0;i<limit;i++){
if(heights[i]>max) max=heights[i];
}
d.push_back(max);
res.push_back(max);
}
if(!d.empty()){
for(int i=0,j=limit;i<heights.size()-limit+1;i++,j++){//for里面一个一个移动
if(j>(heights.size()-1)) return res;
无标题无名氏No.63555890
2024-08-24(六)16:24:36 ID: 2B1rYg7 (PO主)
//规定队首位为最大值,每次添加队首到res
if(d.front()!=heights[i]){
//队首不是i位,队首位与读新位比较,(新位)大于等于就放首部并清空队,小于放尾部
if(d.front()<=heights[j]) {
d.clear();
d.push_front(heights[j]);
}else{
d.push_back(heights[j]);
}
}
else if(d.front()==heights[i]){
//队首是i位,去除队首,新位与队尾比较,大于等于就去除再放尾部,小于放尾部
d.pop_front();
while(d.back()<=heights[j]){
d.pop_back();
}
d.push_back(heights[j]);
}
res.push_back(d.front());
}
}
return res;
}
};
无标题无名氏No.63555917
2024-08-24(六)16:27:54 ID: 2B1rYg7 (PO主)
小肥是c++新手才开始刷了几天题,虽然是专业学生但是基本上混过去了超级菜( ´д`)如果涉及到的c++可以给我索引我去学习一下就好了,不胜感激( ;`д´; )
无标题无名氏No.63618429
2024-08-30(五)22:09:19 ID: 2B1rYg7 (PO主)
非常非常感谢肥哥(;´Д`)确实是非常非常菜的,跟着力扣的那本图解做下来的,这个思路也是看了题解尝试自己做的,后面拿出来调试了一下除了有一个判空没做,其次是感觉判断的思路也太不对,给肥哥磕了
无标题无名氏No.63618475
2024-08-30(五)22:15:13 ID: 2B1rYg7 (PO主)
是很有用的建议,实际上这是我做的第一道困难题(感觉自己看了题解懂了尝试做的),已经回去做简单的了(;´Д`)总之谢谢肥哥,岛内不知道代码如何显示高亮|-` )总之非常感谢,祝肥哥以后生活顺利