滑動視窗中最大的值 Java

2021-09-12 17:29:17 字數 886 閱讀 4312

給定乙個陣列編號,有乙個大小為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之間的空間稱為視窗,由於指標是不斷移動的,從而視窗也可以移動,稱為滑動視窗。滑動視窗的最值 由於視窗是移動的,移動的過程中有新元素的加入也有舊元素的彈出。每一次元素的加入或彈出都可能使視窗中元素的最值發生變化,也正是會發生變化,使得無法直接獲取任意時...