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

滑动窗口的最大值

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

《较难》就这啊😅我以为多难呢

思路:拿一个队列装每一轮窗口的值,并且考虑上一个窗口的最大值是否被排出去,如果是,则重新比较队列里的值,如果不是,则只需比较新进来的值和上一个窗口的最大值,并更新最大值。

class Solution {
  public:
    int q_max(vector<int> arr) {
        int max = arr[0];
        for (int i = 0; i < arr.size(); i++)max = (arr[i] > max) ? arr[i] : max;
        return max;
    }
    vector<int> maxInWindows(vector<int>& num, int size) {
        vector<int> res;
        if (!size || size > num.size()) return res;
        vector<int> query;
        for (int i = 0; i < size; i++) query.push_back(num[i]);

        int pre;
        for (int i = size - 1; i < num.size(); i++) {
            if (i == size - 1) {
                res.push_back(q_max(query));
            } else {
                pre = query.front();
                query.erase(query.begin());
                query.push_back(num[i]);
                if (pre != res.back()) res.push_back((res.back() > query.back()) ? res.back() :
                                                         query.back());
                else res.push_back(q_max(query));
            }
        }
        return res;
    }
};

全部评论

相关推荐

08-08 16:33
唐山学院 Java
职场水母:首先,简历太长,对于实习和应届找工作,hr一眼扫的是学历,技术看实习,你写的技术栈字太多了,尽量用一句话概括不用写那么详细,技术面的时候会问的,而且技术栈都会在实习或者项目里体现,你要做的是,把你的简历浓缩为一页,删除没用的东西,比如实践经历,自我评价,这些纯废话,没用,专业技能写的太离谱,你真的熟练掌握了吗,建议都写熟悉,找工作和写论文不一样,追求的是干练和实用,把实习经历和项目提前,把掌握的技术栈写到最后,然后去找实习,
点赞 评论 收藏
分享
08-19 17:40
Java
吴offer选手:666 打老板了吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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