那些年我們刷過的演算法題 滑動視窗練習題

2021-07-14 04:11:05 字數 1018 閱讀 6666

有乙個整型陣列 arr 和乙個大小為 w 的視窗從陣列的最左邊滑到最右邊,視窗每次向右邊滑乙個位置。 返回乙個長度為

n-w+1的陣列res,res[i]表示每一種視窗狀態下的最大值。 以陣列為[4,3,5,4,3,3,6,7],w=3為例。因為第乙個視窗[4,3,5]

的最大值為5,第二個視窗[3,5,4]的最大值為5,第三個視窗[5,4,3]的最大值為5。第四個視窗[4,3,3]的最大值為4。第五

個視窗[3,3,6]的最大值為6。第六個視窗[3,6,7]的最大值為7。所以最終返回[5,5,5,4,6,7]。

給定整形陣列arr及它的大小n,同時給定w,請返回res陣列。保證w小於等於n,同時保證陣列大小小於等於500。

//思路:借助雙端佇列記錄每個視窗的最大值下標,複雜度為o(n)

1.其中定義雙端佇列qmax用來記錄加入的陣列值得下標

2.判斷佇列中最大值什麼時候加入到結果陣列中(條件為當 i >= w-1時)

3.判斷佇列中什麼時候值過期(條件為當

queue.peekfirst() == i - w時

)4.就是下面圖所示

//判斷隊首元素是否起作用

if(queue.peekfirst() == i - w)

//向result中加入元素

if( i >= w - 1)

}return result;}}

那些年我們刷過的手機

其實使用智慧型手機才一年多,用的是小公尺m1。沒折騰前,miui是穩定版,對應安卓版本好像是2.3。最近開始學安卓開發,使用真機除錯還挺方便。很明顯的感覺是最近幾個月,反應速度慢了。特別是wifi連通的狀態下公升級個應用啊,看個部落格文章啥的都是特別卡。公升級到miui v5吧,用小公尺不刷機好像惘...

刷題 滑動視窗的最大值

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 如果採用蠻力法,掃瞄每乙個滑動視窗並找出最大值,時間複雜度會比較高。這裡我們採用乙個雙端佇列來處理這個問題,佇列存放陣列下標...

刷題 滑動視窗的最大值

題目 給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 視窗大於陣列長度的時候,返回空 示例 輸入 2,3,4,2,6,2,5,1 3 輸出 4,4,6,6,6,5 思路 應...