美文网首页
239滑动窗口最大值

239滑动窗口最大值

作者: su945 | 来源:发表于2020-06-25 21:11 被阅读0次

    题目描述

    给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。

    返回滑动窗口中的最大值。

    问题分析

    利用栈的性质进行

    解题思路1

    class Solution {
    public:
        vector<int> maxSlidingWindow(vector<int>& nums, int k) {
            if(k==0)return {};
            vector<int>res;
            deque<size_t>window;
            /*Init K integers in the list*/
            for (size_t i = 0; i < k; i++) {
                while (!window.empty()  && nums[i] > nums[window.back()]) {
                    window.pop_back();
                }
                window.push_back(i);
            }
            res.push_back(nums[window.front()]);
            /*End of initialization*/
            for (size_t i = k; i < nums.size(); i++) {
                if (!window.empty() && window.front() <= i - k) {
                    window.pop_front();
                }
                while (!window.empty() && nums[i] > nums[window.back()]) {
                    window.pop_back();
                }
                window.push_back(i);
                res.push_back(nums[window.front()]);
            }
            return res;
        }
    };
    

    相关文章

      网友评论

          本文标题:239滑动窗口最大值

          本文链接:https://www.haomeiwen.com/subject/zuwsfktx.html