239 滑動視窗最大值(資料結構系列)

2021-10-19 23:58:49 字數 816 閱讀 8015

給你乙個整數陣列 nums,有乙個大小為 k 的滑動視窗從陣列的最左側移動到陣列的最右側。你只可以看到在滑動視窗內的 k 個數字。滑動視窗每次只向右移動一位。

返回滑動視窗中的最大值。

這題關鍵是知道要用單調佇列來做,難點也是構造單調佇列。

還有乙個注意的點就是不一次性填滿視窗,而是留乙個不填,然後一填滿就記錄最大值,再刪除隊首的元素。

詳細思路見書271

class

solution

q.addlast

(n);

}/*返回當前佇列中的最大值*/

public

intmax()

/*隊頭元素如果是n,刪除它*/

public

void

pop(

int n)}}

/*開始解題*/

public

int[

]maxslidingwindow

(int

nums,

int k)

else

}//把res轉成int

int arr=

newint

[res.

size()

];for(

int i=

0;isize()

;i++

)return arr;

}}

239 滑動視窗最大值

給定乙個陣列 nums,有乙個大小為 k 的滑動視窗從陣列的最左側移動到陣列的最右側。你只可以看到在滑動視窗內的 k 個數字。滑動視窗每次只向右移動一位。返回滑動視窗中的最大值。示例 輸入 nums 1,3,1,3,5,3,6,7 和 k 3 輸出 3,3,5,5,6,7 解釋 滑動視窗的位置 最大...

239 滑動視窗最大值

239.滑動視窗最大值 solution deque solution maxindex 暴力法的時間複雜度為 o n k 弊端為每次掃瞄視窗的最大值,每兩次掃瞄之間都會存在重複的值比較,已經知道了他們的最大值是誰了,所以要減少比較次數 為什麼新增的是索引 將i加到隊尾 deque.addlast ...

239 滑動視窗最大值

給定乙個陣列 nums,有乙個大小為 k 的滑動視窗從陣列的最左側移動到陣列的最右側。你只可以看到在滑動視窗內的 k 個數字。滑動視窗每次只向右移動一位。返回滑動視窗中的最大值。高階 示例 輸入 nums 1,3,1,3,5,3,6,7 和 k 3 輸出 3,3,5,5,6,7 解釋 滑動視窗的位置...