题解 | #在旋转过的有序数组中寻找目标值#

滑动窗口的最大值

http://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788

class Solution { public: vector maxInWindows(const vector& num, unsigned int size) { vector res;//最终返回的数组 if(size<0||size>num.size()) return res; //滑动窗口结构是一种非常重要的结构,就算是被火车撞了也不能忘 //滑动窗口结构主要用到双端队列这么一种结构 deque qmax;//定义一个维持窗口最大值的双端队列 for(int i=0;i<num.size();i++) { while(!qmax.empty()&&num[qmax.back()]<=num[i]){//当双端队列不为空时且此时末尾元素小于等于当前元素,此时应该将队列的末尾元素弹出 qmax.pop_back();//将末尾元素弹出 } qmax.push_back(i);//将i放进队列末尾 //更新队列的头,因为随着滑动窗口向右不断移动,队头值可能会过期 if(qmax.front()==i-size)//说明头已经过期了,弹出 { qmax.pop_front(); } if(i>=size-1){//说明已经形成窗口了 res.push_back(num[qmax.front()]);//将队头元素放入返回数组中 } } return res; } };

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-27 20:55
点赞 评论 收藏
分享
在瑞幸干两年,奥特曼都得闪灯
不知名的牛友:奥特曼每天只上3分钟班
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
深夜书店vv:腾讯是这样的,去年很多走廊都加桌子当工区
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务