Leetcdoe-Day20-代码随想录-栈与队列-239-347
239. 滑动窗口最大值
题目链接
class MyQueue { public: deque que; void pop(int value) { if(!que.empty()&&que.front()==value){ que.pop_front(); } } void push(int value) { while(!que.empty()&&value>que.back()){ que.pop_back(); } que.push_back(value); } int front() { return que.front(); } }; class Solution { public: vector maxSlidingWindow(vector& nums, int k) { MyQueue que; vector result; for(int i=0;i que.push(nums[i]); } result.push_back(que.front()); for(int i=k;i que.pop(nums[i-k]); que.push(nums[i]); result.push_back(que.front()); } return result; } }; public: // 小顶堆 class mycomparison { public: bool operator()(const pair return left.secondright.second;//小顶堆左大于右 } }; vector topKFrequent(vector& nums, int k){ unordered_map map; for(int i=0;i map[nums[i]]++; } priority_queue//注意迭代器的语法 que.push(*it); if(que.size()k){ que.pop(); } } vector result; for(int i=0;i result.push_back(que.top().first);//priority队列的函数有哪些 que.pop(); } return result; }
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。