首页 > 其他 > 详细

Leetcode 239. 滑动窗口最大值

时间:2020-03-25 23:14:53      阅读:71      评论:0      收藏:0      [点我收藏+]

题目:https://leetcode-cn.com/problems/sliding-window-maximum/

单调队列可以实现O(n).

class Solution {
public:
struct data{
    int data;
    int position;
};
    vector<int> maxSlidingWindow(vector<int>& nums, int k) {
    deque<data>de;
    int len=nums.size();
    vector<int>res;
    for(int i=0;i<len;i++){
        while(!de.empty() && de.back().data < nums[i]) // 出队尾直到第一个大于目前的数
        {
            de.pop_back();
        }
        de.push_back(data{nums[i], i});
        if (i - de.front().position >= k)//超出k范围的出队
        {
            de.pop_front();
        }
        if(i >= k-1) //从k-1开始计数
        {
            res.push_back(de.front().data);
        }
    }
    return res;
    }
};

Leetcode 239. 滑动窗口最大值

原文:https://www.cnblogs.com/Hunter01/p/12570386.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!