题解 | #滑动窗口的最大值#

滑动窗口的最大值

http://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788

  1. 用堆的方法,和暴力的方法都可以。

  2. 关键对的解法看注释。

    class Solution {
    public:
     vector<int> maxInWindows(const vector<int>& num, unsigned int size) {
         vector<int> res;
         if(num.size()<size){
             return res;
         }
    
         priority_queue<pair<int,int>> que;// 将元素和对应下标(会自动按照pair的第一个元素)
         int index = 0;//可以看作是窗口第一个元素的index(滑动窗口的左端点)
         for(int i =0; i< num.size(); i++){
             que.push({num[i],i});// 将元素和对应下标入堆
    
             if(i>=size-1){//之后满堆的时候,以此来维持一个类似的滑动窗口的概念
                 while(que.size()&&que.top().second<index){ // 若此时堆顶元素不在窗口内
                     que.pop();    // 弹出堆顶
                 }
    
                 res.push_back(que.top().first);
                 index++;
             }
    
    
    }


    return res;
}

};
```

算法解析 文章被收录于专栏

这里主要是算法岗的自我思路总结

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 11:30
点赞 评论 收藏
分享
zYvv:双一流加大加粗再标红,然后广投。主要是获奖荣誉不够,建议开始不用追求大厂,去别的厂子刷下实习。
点赞 评论 收藏
分享
nus2201602...:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务