AcWing 79 滑動視窗的最大值

2021-09-22 10:02:16 字數 622 閱讀 7933

給定乙個陣列和滑動視窗的大小,請找出所有滑動視窗裡的最大值。

例如,如果輸入陣列[2, 3, 4, 2, 6, 2, 5, 1]及滑動視窗的大小3,那麼一共存在6個滑動視窗,它們的最大值分別為[4, 4, 6, 6, 6, 5]。

注意:樣例

輸入:[2, 3, 4, 2, 6, 2, 5, 1] , k=3

輸出: [4, 4, 6, 6, 6, 5]

建立乙個雙端佇列deque。然後遍歷給定陣列nums,對於當前遇到的陣列元素,先判斷如果deque不為空並且隊首元素已經不在視窗範圍內了,那麼將deque的隊首元素刪除。接下來將當前陣列元素nums[i]逐個與佇列中從deque的尾部開始的元素比較,如果大於等於,那麼將deque中的此元素刪除,迴圈進行直到在deque中遇到比nums[i]大的元素或者deque空了為止,所以deque一直都是從隊首單調遞減的。接下來把 i 加入佇列deque的尾部,那麼此時deque的隊首元素的值就是當前視窗的最大值,將其加入到答案陣列ans的後面。當給定陣列nums遍歷結束後,返回ans。

class solution 

return ans;

}};

最大滑動視窗

題目描述 給定乙個陣列a,有乙個大小為w的滑動視窗,該滑動視窗從最左邊滑到最後邊。在該視窗中你只能看到w個數字,每次只能移動乙個位置。我們的目的是找到每個視窗w個數字中的最大值,並將這些最大值儲存在陣列b中。例如陣列a 1 3 1 3 5 3 6 7 視窗大小w為3。則視窗滑動過程如下所示 wind...

最大滑動視窗

給定乙個陣列a,有乙個大小為w的滑動視窗,該滑動視窗從最左邊滑到最後邊。在該視窗中你只能看到w個數字,每次只能移動乙個位置。我們的目的是找到每個視窗w個數字中的最大值,並將這些最大值儲存在陣列b中。例如陣列a 1 3 1 3 5 3 6 7 視窗大小w為3。則視窗滑動過程如下所示 window po...

最大滑動視窗

給定乙個陣列a,有乙個大小為w的滑動視窗,該滑動視窗從最左邊滑到最後邊。在該視窗中你只能看到w個數字,每次只能移動乙個位置。我們的目的是找到每個視窗w個數字中的最大值,並將這些最大值儲存在陣列b中。例如陣列a 1 3 1 3 5 3 6 7 視窗大小w為3。則視窗滑動過程如下所示 window po...