门户网站推广优势小程序开发定制公司北京
门户网站推广优势,小程序开发定制公司北京,建设服装网站的论文,wordpress 图片 存储一#xff1a;题目 二:思路
1.这个题不能用优先队列#xff0c;虽然我们可以通过优先队列得到最大值#xff0c;但是我们在移动 窗口的时候,便不可以正常的删除元素了 2.虽然不能用优先对列#xff0c;但是我们依然希望可以得到队首的元素的时候是最大值#xff0c;同时还…一题目 二:思路
1.这个题不能用优先队列虽然我们可以通过优先队列得到最大值但是我们在移动 窗口的时候,便不可以正常的删除元素了 2.虽然不能用优先对列但是我们依然希望可以得到队首的元素的时候是最大值同时还不影响移动窗口的时候 pop()元素了,这就引出了单调队列 3.单调队列中的元素是从大到小注意不是全部的元素放入单调队列中 那就和优先队列没啥区别了。 4.单调队列中 push(value)元素的时候value值不能比出口的元素大直到找到一个出口的元素 比vaule值大OK,将其push进去这样就保证了单调队列是递减的我们只考虑在K 个值中的最大值即可,无关去考虑队列中时候有k个值
pop(value)元素的时候如果和单调队列中的队首元素相等,那么我们pop了如果不相等 我们就不用管他因为我们的队列中可能在前面push的时候已经将其淘汰了
三:上码
class Solution {class MyQueue{//定义一个类 这个类当中的方法 可以被调用
public:dequeint que;void pop(int value) {if(!que.empty() value que.front()) {que.pop_front();}}//我们push元素的时候 直到入口元素大于value值为止保证单调队列的递增void push(int value) {while(!que.empty() value que.back()){que.pop_back();}que.push_back(value);}//访问队首元素int front() {return que.front();}};public:vectorint maxSlidingWindow(vectorint nums, int k) {/**思路:1.这个题不能用优先队列虽然我们可以通过优先队列得到最大值但是我们在移动窗口的时候,便不可以正常的删除元素了2.虽然不能用优先对列但是我们依然希望可以得到队首的元素的时候是最大值同时还不影响移动窗口的时候 pop()元素了,这就引出了单调队列3.单调队列中的元素是从大到小注意不是全部的元素放入单调队列中 那就和优先队列没啥区别了。4.单调队列中push(value)元素的时候value值不能比出口的元素大直到找到一个出口的元素比vaule值大OK,将其push进去这样就保证了单调队列是递减的我们只考虑在K个值中的最大值即可,无关去考虑队列中时候有k个值 pop(value)元素的时候如果和单调队列中的队首元素相等,那么我们pop了如果不相等我们就不用管他因为我们的队列中可能在前面push的时候已经将其淘汰了**/MyQueue que;vectorint ans;for(int i 0; i k; i) {que.push(nums[i]);}ans.push_back(que.front());for(int i k; i nums.size(); i) {que.pop(nums[i-k]);//移除上个窗口首元素que.push(nums[i]);//push进去上个窗口右边挨着的元素ans.push_back(que.front());}return ans;}
};如有疑问 请留言
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/92201.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!