給你一個(gè)整數(shù)數(shù)組 nums,有一個(gè)大小為 k 的滑動(dòng)窗口從數(shù)組的最左側(cè)移動(dòng)到數(shù)組的最右側(cè)。你只可以看到在滑動(dòng)窗口內(nèi)的 k 個(gè)數(shù)字。滑動(dòng)窗口每次只向右移動(dòng)一位。
classSolution:defmaxSlidingWindow(self, nums: List[int], k:int)-> List[int]:# 邊界條件if k *len(nums)==0:return[]# 優(yōu)化if k ==1:return numsfrom collections import dequeq = deque()# 單調(diào)隊(duì)列法:def clean_q()這個(gè)函數(shù)是精髓defclean_q(i):while q and q[0]<= i-k:q.popleft()while q and nums[q[-1]]< nums[i]:q.pop()q.append(i)res =[]for i inrange(k):clean_q(i)res.append(nums[q[0]])for i inrange(k,len(nums)):clean_q(i)res.append(nums[q[0]])return res