64 滑動視窗的最大值

2021-09-25 06:18:43 字數 809 閱讀 4258

題目描述

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為; 針對陣列的滑動視窗有以下6個: , , , , , 。

class solution 

};

/*思路就是採用雙端佇列,佇列中的頭節點儲存的資料比後面的要大。

比如當前假如的資料比隊尾的數字大,說明當前這個數字最起碼在從現在起到後面的過程中可能是最大值

,而之前隊尾的數字不可能最大了,所以要刪除隊尾元素。

此外,還要判斷隊頭的元素是否超過size長度,由於儲存的是下標,所以可以計算得到;

特別說明,我們在雙端佇列中儲存的數字是傳入的向量的下標;

*/

class solution 

for(unsigned int i=size; i= num[dq.back()])

dq.pop_back();

if(!dq.empty() && dq.front() <= i-size)

dq.pop_front();

dq.push_back(i);

}vec.push_back(num[dq.front()]);

return vec;

}};

還可以在視窗中進行比較,大的儲存到向量中。

class solution 

max.push_back(m);

}return max;

}};

64 滑動視窗的最大值

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 思路 暴力解法,時間複雜度o kn 不可取。用三個堆疊,其中兩個堆疊負責模擬佇列,存放劃窗內的數,另乙個堆疊存放當前最大值,...

64 滑動視窗的最大值

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 leetcode對應題目 239.滑動視窗最大值 題目解答 總結 用k來表示size。使用deque儲存視窗中最大值的下標,...

64 滑動視窗的最大值

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 classname solution description todo date 2019 12 23 16 32 auth...