給定乙個陣列和滑動視窗的大小,請找出所有滑動視窗裡的最大值。
例如,如果輸入陣列[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...