class Solution:
def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
if not nums or k==0:return []
deque = collections.deque()
#未形成窗口
for i in range(k):
while deque and deque[-1] < nums[i]:
deque.pop()
deque.append(nums[i])
res = [deque[0]]
#形成窗口后
for i in range(k,len(nums)):
if deque[0] == nums[i-k]:
deque.popleft()
while deque and deque[-1] < nums[i]:
deque.pop()
deque.append(nums[i])
res.append(deque[0])
return res
import heapq
class Solution:
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
map = {}
for i in range(len(nums)):
map[nums[i]] = map.get(nums[i],0) + 1
pri_que = []
for key,value in map.items():
heapq.heappush(pri_que,(value,key))
if len(pri_que) > k:
heapq.heappop(pri_que)
result = [0] * k
for i in range(k-1,-1,-1):
result[i] = heapq.heappop(pri_que)[1]
return result