首页 > 其他 > 详细

Deque - leetcode 【双端队列】

时间:2017-01-25 08:27:31      阅读:251      评论:0      收藏:0      [点我收藏+]

239. Sliding Window Maximum

//大概思路是用双向队列保存数字的下标,遍历整个数组,如果此时队列的首元素是i - k的话,表示此时窗口向右移了一步,则移除队首元素。然后比较队尾元素和将要进来的值,如果小的话就都移除,然后此时我们把队首元素加入结果中即可
vector<int> maxSlidingWindow(vector<int>& nums, int k) {
vector<int> res;
deque<int> q;
for(int i = 0; i < nums.size(); i++){
if(!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) res.push_back(nums[q.front()]);
}
return res;
}

Deque - leetcode 【双端队列】

原文:http://www.cnblogs.com/93scarlett/p/6349040.html

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