首页 > 其他 > 详细

leetcode239

时间:2019-03-05 22:50:02      阅读:226      评论:0      收藏:0      [点我收藏+]
 1 class Solution:
 2     def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
 3         n = len(nums)
 4         if n==0:
 5             return []
 6         if k==0:
 7             return []
 8         dic = {}
 9         for i in range(k):
10             dic.update({i:nums[i]})
11                 
12         maxindex = max(dic,key=dic.get)
13         result = list()
14         result.append(dic[maxindex])
15 
16         i=0
17         j=k
18         while j<len(nums):
19             del dic[i]
20             dic.update({j:nums[j]})
21             maxindex = max(dic,key=dic.get)
22             result.append(dic[maxindex])
23             i+=1
24             j+=1
25 
26         return result

显然这是暴力搜索算法,性能比较差,执行时间1800ms,基本上是超时的边缘了。

下面是参考其他人的,执行时间120ms

 1 class Solution:
 2     def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
 3         n=len(nums)
 4         stack=[]
 5         ans=[]
 6         for i in range(n):
 7             while stack and nums[i]>nums[stack[-1]]:
 8                 stack.pop()
 9             while stack and i-stack[0]>=k:
10                 stack.pop(0)
11             stack.append(i)
12             if i>=k-1: 
13                 ans.append(nums[stack[0]])
14         return ans

 

leetcode239

原文:https://www.cnblogs.com/asenyang/p/10480159.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!