239 滑動視窗最大值

2021-10-05 17:51:27 字數 1067 閱讀 9202

239.滑動視窗最大值

solution - deque

solution - maxindex

暴力法的時間複雜度為 o(n*k),弊端為每次掃瞄視窗的最大值,每兩次掃瞄之間都會存在重複的值比較,已經知道了他們的最大值是誰了,所以要減少比較次數

為什麼新增的是索引

// 將i加到隊尾

deque.

addlast

(ri)

;// 檢查視窗的索引是否合法

int li = ri - k +1;

if(li <0)

continue

;// 檢查隊頭的合法性

if(deque.

peekfirst()

< li)

// 設定視窗的最大值

maxes[li]

= nums[deque.

peekfirst()

];}return maxes;

}

public

int[

]maxslidingwindow

(int

nums,

int k)

// li是滑動視窗的最左索引

for(

int li =

0; li < maxes.length; li++)}

else

if(nums[ri]

>= nums[maxidx]

) maxes[li]

= nums[maxidx];}

return maxes;

}

239 滑動視窗最大值

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

239 滑動視窗最大值

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

239 滑動視窗最大值

給定乙個陣列 nums,有乙個大小為 k 的滑動視窗從陣列的最左側移動到陣列的最右側。你只可以看到在滑動視窗內的 k 個數字。滑動視窗每次只向右移動一位。返回滑動視窗中的最大值。可以想到維護乙個類似單調棧的資料結構,單調佇列,佇列內的資料嚴格單調遞減,因此每次尋找最大值時就直接返回隊頭即可,滿足o ...