面试题59 - I. 滑动窗口的最大值/239. 滑动窗口最大值
生活随笔
收集整理的這篇文章主要介紹了
面试题59 - I. 滑动窗口的最大值/239. 滑动窗口最大值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2020-05-11
1.題目描述
滑動窗口的最大值2.題解
使用雙端隊列維護一個遞減的隊列3.代碼
class Solution { public:vector<int> maxSlidingWindow(vector<int>& nums, int k) {vector<int> res;int l=nums.size();if (!l) return res; deque<int> myqueue; // 雙端隊列for (int i=0;i<l;i++){ // 維護一個遞減的隊列,存放的是元素所對應的下標if (!myqueue.empty()&&myqueue.front()<=i-k){myqueue.pop_front(); // 當前最大的元素的下標不屬于當前滑動窗口內}while(!myqueue.empty()&&nums[myqueue.back()]<=nums[i]){ // 隊列中小于當前值的元素出隊列myqueue.pop_back();}myqueue.push_back(i); // 進隊列if (i>=k-1) res.push_back(nums[myqueue.front()]);}return res;} }; class Solution { public:vector<int> maxSlidingWindow(vector<int>& nums, int k) {vector<int> res;int l=nums.size();deque<int> myque; // 維護一個遞減的隊列for (int i=0;i<l;i++){while (!myque.empty()&&nums[myque.back()]<=nums[i]){myque.pop_back(); // 出隊列}myque.push_back(i); // 入隊列if (myque.front()<=i-k) myque.pop_front();if (i>=k-1) res.push_back(nums[myque.front()]);}return res;} };總結
以上是生活随笔為你收集整理的面试题59 - I. 滑动窗口的最大值/239. 滑动窗口最大值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Laravel中构造方法中不能写retu
- 下一篇: 组内管理帐号