leetcode 239 滑動視窗最大值

2022-04-03 15:55:46 字數 799 閱讀 3842

一:暴力解法,能ac但是時間複雜度o(nk)

class

solution ;

vector

res;

for(int i=0;i<=len-k;i++)

res.push_back(key);

}return

res;}};

二,維護乙個特殊的優先佇列(使用deque實現)假設當前佇列已經是優先佇列(最大值在隊首),而且這個佇列是有序遞減的,那麼當新加入乙個元素時執行兩個操作,

1)檢查隊首下標是否合法,假如隊首下標已經不在滑窗內,則將其彈出;

2)檢查已有的佇列中的元素是否比當前元素小,小的元素全部彈出。由於已經是按值有序遞減的數列,那麼只需要不斷的比較末尾和當前元素,即可完成該項;

此時已經對新進入的元素維護好了乙個最大元素下標在隊首,元素下標按值有效遞減,且下標從左到右是有序的的乙個佇列;獲取隊首元素可得當前滑窗的大小;

class

solution ;

vector

res;

deque

dq;int len=nums.size();

for(int i=0;i)

dq.push_back(i);

//當前的有效下降子串行已經維護好;

if(i>=k-1

) }

return

res;}};

LeetCode 239 滑動視窗最大值

class solution public int maxslidingwindow int nums,int k int numlen nums.length if nums null numlenmaxheap new priorityqueue a,b nums b nums a for in...

LeetCode 239 滑動視窗最大值

給定乙個陣列 nums,有乙個大小為 k 的滑動視窗從陣列的最左側移動到陣列的最右側。你只可以看到在滑動視窗 k 內的數字。滑動視窗每次只向右移動一位。返回滑動視窗最大值。示例 輸入 nums 1,3,1,3,5,3,6,7 和 k 3 輸出 3,3,5,5,6,7 解釋 滑動視窗的位置 最大值 1...

leetcode239滑動視窗最大值

給定乙個陣列 nums,有乙個大小為 k 的滑動視窗從陣列的最左側移動到陣列的最右側。你只可以看到在滑動視窗 k 內的數字。滑動視窗每次只向右移動一位。返回滑動視窗最大值。示例 輸入 nums 1,3,1,3,5,3,6,7 和 k 3 輸出 3,3,5,5,6,7 解釋 滑動視窗的位置 最大值 1...