劍指Offer I 滑動視窗的最大值

2021-10-06 03:18:15 字數 889 閱讀 8009

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

示例:輸入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3

輸出: [3,3,5,5,6,7] 

解釋: 

滑動視窗的位置                最大值

---------------               -----

[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

直接模擬複雜度o(kn)

利用雙向佇列實現o(n)

這裡就注意一點,為什麼用陣列下標而不是數值

模擬圖題解:

class solution 

q.push_back(i);

}for(int i = k;i < len;i++)

//如果下標之差大於等於滑動視窗大小,這個數字已經滑出

if(q.empty() != true && q.front() <= i-k)

q.push_back(i);

}ret.push_back(nums[q.front()]);

}return ret;}};

劍指 滑動視窗的最大值

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 如果採用蠻力法,這個問題似乎不難解決 可以掃瞄每乙個滑動視窗的所有數字並找出其中的最大值。如果滑動視窗的大小為 k,需要 o...

劍指offer 滑動視窗最大值

很多題解都是用雙端佇列,但是既然是區間最值得問題,那麼可以用st表 唯一注意的是引數陣列的大小一定要大於視窗的大小,不然沒意義,即 中的len size的時候退出 果然還是引數的合法性一定要考慮,尤其是提示段錯誤的時候,而自己在本地測試沒問題,一般都是引數合法性的問題!一開始就是漏了這個條件,一直提...

劍指offer 滑動視窗的最大值

題目描述 給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們 的最大值分別為 針對陣列的滑動視窗有以下6個 思路描述 掃瞄給定的陣列,用乙個大小為size的堆維護,將這次的元素加入堆中,找出其中的最大值 然後利用firs...