class Solution:
def maxSlidingWindow(self, nums: 'List[int]', k: int) -> 'List[int]':
n = len(nums)
if n==0:
return []
if k==0:
return []
dic = {}
for i in range(k):
dic.update({i:nums[i]}) maxindex = max(dic,key=dic.get)
result = list()
result.append(dic[maxindex]) i=0
j=k
while j<len(nums):
del dic[i]
dic.update({j:nums[j]})
maxindex = max(dic,key=dic.get)
result.append(dic[maxindex])
i+=1
j+=1 return result

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

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

 class Solution:
def maxSlidingWindow(self, nums: 'List[int]', k: int) -> 'List[int]':
n=len(nums)
stack=[]
ans=[]
for i in range(n):
while stack and nums[i]>nums[stack[-1]]:
stack.pop()
while stack and i-stack[0]>=k:
stack.pop(0)
stack.append(i)
if i>=k-1:
ans.append(nums[stack[0]])
return ans

思路分析:使用滑动窗口,stack是宽度为k的滑动窗口,并且里面的元素是从大到小排列的。

外层滑动窗口每次取的是stack[0],也就是当前滑动个窗口范围内最大的值的下标,存储在stack[0]中。因此nums[stack[0]]就是当前范围的最大值。

leetcode239的更多相关文章

  1. [Swift]LeetCode239. 滑动窗口最大值 | Sliding Window Maximum

    Given an array nums, there is a sliding window of size k which is moving from the very left of the a ...

  2. LeetCode239. Sliding Window Maximum

    Given an array nums, there is a sliding window of size k which is moving from the very left of the a ...

  3. 剑指offer-java

    面试题67 机器人的运动范围 题意: 地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子. ...

  4. LeetCode-Queue

    简单题 1. 数据流中的移动平均值 $(leetcode-346) 暂无 2. 最近的请求次数(leetcode-933) 写一个 RecentCounter 类来计算最近的请求. 它只有一个方法:p ...

随机推荐

  1. git一些有用的命令

    更改本地和远程分支的名称 git branch -m old_branch new_branch # Rename branch locally 本地分支改名 git push origin :old ...

  2. 1159 Palindrome

    Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 68562   Accepted: 23869 Desc ...

  3. zabbix3.4安转

    其实很简单  在官网上有安装文档,我只不过是将官网上的拿了下来 安装apache和php 数据库mariadb(我的系统是centos7的所以安装mariadb) 开始zabbix的安装 本次实验 系 ...

  4. 通过GUID确保winform运行唯一实例

    通过程序生成的GUIDwinform唯一实例 using System.Threading;bool createdNew; Guid ownGUID = new Guid(((GuidAttribu ...

  5. js补零方法

    方法如下: function getZero(num, index) { if((parseInt(num) != 0) && (typeof num == "undefin ...

  6. LVS DR模式搭建、keepalived+lvs

    1.LVS DR模式搭建 条件: 即三台机器,在同一内网. 编辑脚本文件:/usr/local/sbin/lvs_dr.sh #! /bin/bashecho 1 > /proc/sys/net ...

  7. paramiko模块(01-04节)、SSH

    1.  SSH(安全外壳协议) SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SS ...

  8. Web前端新手想提升自身岗位竞争力,需做好这3件事!

    Web前端开发行业的发展前景毋庸置疑,只要是互联网企业,几乎都需要Web前端开发工程师.虽然Web前端入行门槛低,但竞争逐渐激烈,想要取得高薪,就一定要具备强大的实力.那么,在重庆Web前端培训学习中 ...

  9. 01python语言程序设计基础——初识python

    1.python的字符串中format函数用法   format 函数可以接受不限个参数,位置可以不按顺序. In [2]: "{} {}".format("hello& ...

  10. jenkins构建完成后,执行的命令行的东西也会自动结束的解决办法

    问题: 把添加VPN的指令写在脚本里,然后用jenkins执行这个脚本,jenkins执行的结果是成功的,但是在机器上看,并没有执行成功.   问题分析: 其实在机器上执行过添加VPN的操作,只是在j ...