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

滑动窗口的最大值

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

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param num int整型vector 
     * @param size int整型 
     * @return int整型vector
     */
    vector<int> maxInWindows(vector<int>& num, int size) {
        // write code here
        if (num.size() == 0 || size == 0 || size > num.size()) return {};
        vector<int> ret(num.size()- size + 1);
        deque<int> que;
        int i;
        for (i = 0; i < size; ++i) {
            while (!que.empty() && que.back() < num[i]) {
                que.pop_back();
            }
            que.push_back(num[i]);
        }
        ret[0] = que.front();
        for (i = size; i < num.size(); ++i) {
            if (que.front() == num[i-size]) {
                que.pop_front();
            }
            while (!que.empty() && que.back() < num[i]) {
                que.pop_back();
            }
            que.push_back(num[i]);
            ret[i-size+1] = que.front();
        }
        return ret;
    }
};

全部评论

相关推荐

06-12 16:23
已编辑
小米_软件开发
点赞 评论 收藏
分享
想按时下班的大菠萝在...:隔壁学校的,加油多投, 实在不好找可以下个学期开学找,把算法八股准备好,项目有空再换换
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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