leetcode 239. 滑动窗口最大值

74 阅读1分钟

c++

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

js

var maxSlidingWindow = function(nums, k) {
    var que = [];
    var ans = [];
    for (var i = 0; i < nums.length; i++) {
        while (que.length && nums[que[que.length - 1]] < nums[i]) que.pop();
        que.push(i);
        if (i - que[0] == k) que.shift();
        if (i + 1 < k) continue;
        ans.push(nums[que[0]]);
    }
    return ans;
};