[leetcode]Sliding Window Maximum

来源:互联网 发布:ppt软件学习 编辑:程序博客网 时间:2024/05/22 06:40

双端队列练习

class Solution {//时间复杂度O(n)public:    vector<int> maxSlidingWindow(vector<int>& nums, int k) {        int n=nums.size();        //queue<int> q;        deque<int> q;        vector<int> ans;        for(int i=0;i<n;++i){            while(!q.empty()&&q.front()<=(i-k)){                q.pop_front();//扔掉过期的元素            }            while(!q.empty()&&nums[q.back()]<=nums[i]){                q.pop_back();//扔掉队尾(又旧又小的元素)            }            q.push_back(i);//入队            if(i>=k-1){//结果和原vector不等长                ans.push_back(nums[q.front()]);            }        }        return ans;    }};
0 0
原创粉丝点击