給定乙個陣列編號,有乙個大小為k的滑動視窗,它從陣列的最左邊移動到最右邊。你只能在視窗看到k個數字。每次滑動視窗右移乙個位置。返回最大滑動視窗。
example:
input: nums = [1,3,-1,-3,5,3,6,7], and k = 3
output: [3,3,5,5,6,7]
explanation:
window position max
--------------- -----
[1 3 -1] -3 5 3 6 7 3
1 [3 -1 -3] 5 3 6 7 3
1 3 [-1 -3 5] 3 6 7 5
1 3 -1 [-3 5 3] 6 7 5
1 3 -1 -3 [5 3 6] 7 6
1 3 -1 -3 5 [3 6 7] 7
可以使用雙端佇列
**:
public int maxslidingwindow(int nums, int k)
//當新加入的值大於之前的值時,移除之前的值(向左比較)
while(!deque.isempty() && nums[deque.peeklast()] < nums[i])
//比較和移除完之後,將新索引存入佇列中
deque.offer(i);
//從第k-1個元素開始,隊頭(最左端)索引對應的值此時是視窗中最大的值
if(i >= k-1)
}return result;
}
滑動視窗中的最大值
給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 通過陣列大小和滑動視窗大小可知,存在多少個滑動視窗 size arr size 滑動視窗 1。從陣列的第乙個位置開始遍歷,尋...
判斷滑動視窗中的最大值
問題 給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 分析 1 建立滑動視窗,並初始化化。2 動態更新視窗值 因為視窗是每一次只移動一位,所以每次只需要更新視窗內部指定的一...
求滑動視窗中的最大值和最小值
滑動視窗 一般使用雙指標演算法,左指標l和右指標r之間的空間稱為視窗,由於指標是不斷移動的,從而視窗也可以移動,稱為滑動視窗。滑動視窗的最值 由於視窗是移動的,移動的過程中有新元素的加入也有舊元素的彈出。每一次元素的加入或彈出都可能使視窗中元素的最值發生變化,也正是會發生變化,使得無法直接獲取任意時...