<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【滑動窗口最值】滑動窗口的最值的一種方案

        假設(shè)現(xiàn)在有數(shù)組a[n],和滑動的窗口長度為k <= n,要求長度為k的滑動窗口的最值,一般來說,我們會遇到以下問題:

       

        在窗口向右滑動時(shí),由于不知道將要刪除的元素在窗口中的位置,于是只能暴力遍歷窗口來刪除舊元素。增加了時(shí)間復(fù)雜度到O(n^2logn)

        以下是解決該問題的一種方案:

        使用一個(gè)額外的優(yōu)先隊(duì)列來儲存待刪除的元素,等到儲存窗口的優(yōu)先隊(duì)列的隊(duì)首元素和待刪除元素所在元素相同時(shí)就一直刪除倆隊(duì)首,直到一方為空或者隊(duì)首不再相等,時(shí)間復(fù)雜度為O(n*logn)

        相同代碼如下:

      #include<bits/stdc++.h>
      #define int long long
      using namespace std;
      
      int n,k;
      signed main ()
      {
          ios::sync_with_stdio(false);
          cin.tie(0);
          
          cin>>n>>k;
          vector<int> mn;
          vector<int> mx,a(n);
          priority_queue<int> p,q;
          priority_queue<int,vector<int>,greater<int>> p1,q1;
          for(int i = 0; i < n; i++){
              cin>>a[i];
          }
          
          for(int i = 0; i < k; i++){
              p.push(a[i]);
              p1.push(a[i]);
          //首先創(chuàng)建長度為k的兩個(gè)滑動窗口 } mx.push_back(p.top()); mn.push_back(p1.top());
      //存下初始狀態(tài)的答案
      for(int i = k; i < n; i++){ q.push(a[i - k]); q1.push(a[i - k]);
      //滑動窗口記錄下應(yīng)該刪除的元素
      if(p.size() && q.size()){ while(p.top() == q.top()){ p.pop(); q.pop(); if(p.empty() || q.empty()) break; } } if(p1.size() && q1.size()){ while(p1.top() == q1.top()){ p1.pop(); q1.pop(); if(p1.empty() || q1.empty()) break; } } p.push(a[i]); p1.push(a[i]); mx.push_back(p.top()); mn.push_back(p1.top()); } int len = mx.size(); for(int i = 0; i < len; i++){ cout<<mn[i]<<" "; } cout<<'\n'; for(int j = 0; j < len; j++){ cout<<mx[j]<<" "; } return 0; }

        那么久只剩一個(gè)問題了,為什么時(shí)間復(fù)雜度減少到了O(n*logn) 看起來while循環(huán)很多對吧,其實(shí)我們換個(gè)角度考慮問題,每個(gè)元素最多入隊(duì)4次,出隊(duì)4次,

        我們一共有n個(gè)元素消耗時(shí)間T(4*n) 插入的時(shí)間復(fù)雜度時(shí)O(logn) 那么時(shí)間復(fù)雜度為O(nlogn) 成功減少了時(shí)間復(fù)雜度。

       

      另:有儲存下標(biāo)來刪除滑動窗口的做法。

      posted @ 2023-12-15 16:35  意外路過的番茄醬騎士  閱讀(41)  評論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 温泉县| 亚洲性美女一区二区三区| 免费av深夜在线观看| 亚洲一本大道在线| 国产美女被遭强高潮免费一视频| 中文字幕亚洲男人的天堂| 办公室强奷漂亮少妇视频| 日韩成人一区二区三区在线观看| 惠州市| 日韩高清不卡一区二区三区| 国产AV影片麻豆精品传媒| 久久综合国产色美利坚| 国产欧美日韩亚洲一区二区三区 | 99久久免费精品色老| 欧美高清狂热视频60一70| 中国少妇人妻xxxxx| 樱花草在线社区WWW韩国| 成全世界免费高清观看| 亚洲久久色成人一二三区| 人人爽人人爽人人片av东京热| 人人妻人人爽人人澡av| 亚洲av伊人久久综合性色| 久久精品视频这里有精品| 国产精品天堂蜜av在线播放| 91孕妇精品一区二区三区| 久久香蕉国产亚洲av麻豆| 性姿势真人免费视频放| 精品无码老熟妇magnet| 亚洲综合一区二区三区视频| 亚洲精品中文字幕二区| 麻豆蜜桃av蜜臀av色欲av| 蜜桃视频一区二区三区四| 92国产福利午夜757小视频| 久久久WWW成人免费精品| 晋江市| 亚洲成人av高清在线| 亚洲精品中文av在线| 钟祥市| 亚洲日产韩国一二三四区| 亚洲AV熟妇在线观看| 成人亚欧欧美激情在线观看|