題目描述
給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小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...