您的位置:首页 > 其它

Sliding Window Maximum

2015-08-15 11:15 246 查看
使用deque存数组的索引值,保证deque中元素是降序的,即每次取front就能取到最大元素。

class Solution {

public:

    vector<int> maxSlidingWindow(vector<int>& nums, int k) {

        deque<int> win;

        vector<int> res;

        

        if(nums.size() < k || k == 0) return res;

                

        for(int i=0; i<k; ++i) {

            while(win.size() > 0 && nums[win.back()] <= nums[i]) {

                win.pop_back();

            }

            win.push_back(i);

        }

        for(int i=k; i<nums.size(); ++i) {

            res.push_back(nums[win.front()]);

            while (win.empty() != true && i-win.front() >= k) {

                win.pop_front();

            }

            while(win.size() > 0 && nums[win.back()] <= nums[i]) {

                win.pop_back();

            }

            win.push_back(i);

        }

        res.push_back(nums[win.front()]);

        return res;

    }

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: