スライディングウィンドウの最大値-1

リコウ住所

dequeを使用して、単調に減少するキューを維持します

dequeに格納された配列位置

class Solution {
public:
    vector<int> maxSlidingWindow(vector<int>& nums, int k) {
        deque<int> dq;
        vector<int> res;
        for (int i = 0; i < nums.size(); ++i) {
            while (!dq.empty() && nums[dq.back()] < nums[i]) {
                dq.pop_back();
            }
            dq.push_back(i);
            if (i - dq.front() >= k) {
                dq.pop_front();
            }
            if (i >= k - 1) {
                res.push_back(nums[dq.front()]);
            }
        }
        return res;
    }
};

 

おすすめ

転載: blog.csdn.net/TESE_yan/article/details/114232374