写作绅士,读作丧尸 X岛揭示板
顺猴者昌 逆猴者亡 首页版规 |用户系统 |移动客户端下载 | 丧尸路标 | | 常用图串及路标 | 请关注 官方公众号:【X岛揭示板】 官方微博: 【@X岛极速版】| 人,是会思考的芦苇
常用串:·豆知识·跑团板聊天室·公告汇总串·X岛路标

No.63555867 - 无标题 - 技术宅


回应模式
No.63555867
名 称
E-mail
标题
颜文字
正文
附加图片
•程序语言、压制投稿、视频制作以及各计算机领域的技术问题
•我觉得还是CSDN靠谱一点
•本版发文间隔为15秒。

无标题 无名氏 2024-08-24(六)16:22:56 ID:2B1rYg7 [举报] [订阅] [只看PO] No.63555867 [回应] 管理
路过的肥哥,可以帮小肥看看代码吗( ›´ω`‹ )
力扣239:滑动窗口最大值c++
Tips 无名氏 2099-01-01 00:00:01 ID:Tips超级公民 [举报] No.9999999 管理
(´゚Д゚`)别抽我行吗
无标题 无名氏 2024-08-24(六)16:23:21 ID:2B1rYg7 (PO主) [举报] No.63555871 管理
https://leetcode-cn.com/problems/sliding-window-maximum/
无标题 无名氏 2024-08-24(六)16:24:10 ID:2B1rYg7 (PO主) [举报] No.63555883 管理
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;


        
无标题 无名氏 2024-08-24(六)16:24:36 ID:2B1rYg7 (PO主) [举报] No.63555890 管理
    //规定队首位为最大值,每次添加队首到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;    

    }
};
收起 查看大图 向左旋转 向右旋转
无标题 无名氏 2024-08-24(六)16:27:54 ID:2B1rYg7 (PO主) [举报] No.63555917 管理
小肥是c++新手才开始刷了几天题,虽然是专业学生但是基本上混过去了超级菜( ´д`)如果涉及到的c++可以给我索引我去学习一下就好了,不胜感激( ;`д´; )
收起 查看大图 向左旋转 向右旋转
无标题 无名氏 2024-08-24(六)16:32:16 ID:2B1rYg7 (PO主) [举报] No.63555974 管理
好心肥哥来(;´Д`)好心肥哥来
无标题 无名氏 2024-08-25(日)23:56:19 ID:YfgpobQ [举报] No.63570206 管理
首先,原题数组会有负数。你这初始化max = 0,给你个[-1, -1] 2的输入,初始化完成后res是0[0,0]
其次,初始化完d里永远只有一个元素。如果给你[3, 2, 0, 0] 3,初始化完2都被你丢掉了,你打算怎么输出答案里的第二位( ゚∀。)
再次,数组越界了。给你[0, 0] 2,会因为0<2-2+1进入循环,而你的循环会访问heights0[0,2]
同时,循环边界条件有问题。还是给你[0, 0] 2,显然答案大小是1,而你在初始化和循环各向res推了一个数

这可能不是全部的问题,但是显然你的整个程序需要重写,再看下去也没有什么帮助
我猜测这个思路是你看的题解,但实现中出现了很多的问题
这个建议或许有些刻薄,但是我看到了“尚未学会走路时尝试奔跑”。或许你应当考虑从简单题开始

最后,下次请使用pastebin( ´_ゝ`)
*没有人*会想看非等宽无高亮还分成两部分的代码的,更别说肉眼debug了
无标题 无名氏 2024-08-25(日)23:59:49 ID:YfgpobQ [举报] No.63570237 管理
>>No.63570206
第一行末&第三行末被解析成roll点了
更正:
”res是\[0\]”
”heights\[2\]”
无标题 无名氏 2024-08-30(五)22:09:19 ID:2B1rYg7 (PO主) [举报] No.63618429 管理
非常非常感谢肥哥(;´Д`)确实是非常非常菜的,跟着力扣的那本图解做下来的,这个思路也是看了题解尝试自己做的,后面拿出来调试了一下除了有一个判空没做,其次是感觉判断的思路也太不对,给肥哥磕了
收起 查看大图 向左旋转 向右旋转
无标题 无名氏 2024-08-30(五)22:11:48 ID:2B1rYg7 (PO主) [举报] No.63618446 管理
>>No.63570237
特别感谢
无标题 无名氏 2024-08-30(五)22:15:13 ID:2B1rYg7 (PO主) [举报] No.63618475 管理
是很有用的建议,实际上这是我做的第一道困难题(感觉自己看了题解懂了尝试做的),已经回去做简单的了(;´Д`)总之谢谢肥哥,岛内不知道代码如何显示高亮|-` )总之非常感谢,祝肥哥以后生活顺利
无标题 无名氏 2024-09-02(一)01:14:47 ID:YfgpobQ [举报] No.63638569 管理
>>No.63618429
这道题适合那些“已经可以准确把思路转化为程序,并具备初步算法能力”的人
一步一步来,揠苗助长可不是好习惯

>>No.63618475
关于高亮:
上策:使用一类名叫pastebin的文本分享网站,它们常被用于分享各类因长度或可读性问题不适合直接展示的内容
下策:直接ide截图( ゚∀。)

UP主: