刷演算法 滑動視窗的最大值

2021-09-13 13:03:26 字數 642 閱讀 6196

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為; 針對陣列的滑動視窗有以下6個: , , , , , 。

仔細想想,對於陣列來說,假如視窗大小為3,則整個過程如下:

,此時最大值是4

,此時最大值是4

,此時最大值是6,因為新進入視窗的6比4還大

,此時最大值是6

,此時最大值是6

,此時最大值是5

可以得出思路是:

儲存當前視窗最大值的陣列下標maxindex,滑動一次視窗,若maxindex還在視窗內,則只需要比較maxindex處的值和最新進入視窗的值哪個大,新進入的值大則更新maxindex,否則不需要更新;若maxindex不在視窗內,則要遍歷一次當前視窗的所有值找出新的maxindex

function maxinwindows(arr, size)

if(arr[r] > arr[maxindex])

res.push(arr[maxindex]);

}return res;

}function getmaxindex(arr, l, r)

return index;

}

刷演算法 滑動視窗的最大值

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 仔細想想,對於陣列來說,假如視窗大小為3,則整個過程如下 此時最大值是4 此時最大值是4 此時最大值是6,因為新進入視窗的6...

刷題 滑動視窗的最大值

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

刷題 滑動視窗的最大值

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