給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為; 針對陣列的滑動視窗有以下6個: , , , , , 。
思路:暴力解法,時間複雜度o(kn),不可取。用三個堆疊,其中兩個堆疊負責模擬佇列,存放劃窗內的數,另乙個堆疊存放當前最大值,空間複雜度較高,不可取。最佳方法應該是採用deque雙端佇列,存放陣列下標,佇列頭為當前劃窗的最大值所對應的下標,如果佇列頭下標不在劃窗範圍內,則刪除;如果佇列尾下標對應的值比當前迴圈到的值要小,則刪除,直到不滿足此條件或隊列為空為止,當前值若比迴圈到的值要大,則將迴圈到的值插入佇列。
**:
class solution
for(unsigned int i = size; i < num.size(); ++i)
if(!index.empty() && index.front() <= (int)(i - size))
index.push_back(i);
}res.push_back(num[index.front()]);
}return res;
}};
64 滑動視窗的最大值
給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 leetcode對應題目 239.滑動視窗最大值 題目解答 總結 用k來表示size。使用deque儲存視窗中最大值的下標,...
64 滑動視窗的最大值
題目描述 給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 class solution 思路就是採用雙端佇列,佇列中的頭節點儲存的資料比後面的要大。比如當前假如的資料比隊尾...
64 滑動視窗的最大值
給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 classname solution description todo date 2019 12 23 16 32 auth...