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. qssp2017 source

    ftp://ftp.gfz-potsdam.de/pub/home/turk/wang

  2. 18-09-21 numpy 的基础学习01

    # 1关于numpy 的学习import numpy as np # 一 如何创建数组****# 1 有规律的一维数据的创建======# 1 range() 和arange() 区别 貌似没有区别l ...

  3. Windows 命令行解析工具(getopt)

    忘记了上次在哪里找到这个功能库,只有一个 .h 和 .c 文件,再次搜索的时候发现找不到了,结果只能在之前的代码中,两个文件提出使用,顾将这两个文件备份在这里. /* Getopt for Micro ...

  4. 《ProgrammingHive》阅读笔记-第二章

    书本第二章的一些知识点,在cloudera-quickstart-vm-5.8.0-0上进行操作. 配置文件 配置在/etc/hive/conf/hive-site.xml文件里面,采用mysql作为 ...

  5. Windows下运行Linux命令

    安装Gow软件,Gow-0.7.0.exe,这样就可以在Windows命令行运行Linux命令,比如通过scp把Windows下的文件拷贝到Linux下. 直接运行安装,不会生成任何客户端,直接使用W ...

  6. 《Linux内核原理与分析》第五周作业

    课本:第4章 系统调用的三层机制(上) -用户态.内核态和中断 -用户态:在低的执行级别下,代码能够掌控的范围有所限制,只能访问部分内存. -内核态:在高的执行级别下,代码可以执行特权指令,访问任意的 ...

  7. mysql连接拍错总结

    1. ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10060)   ? 关闭网络防火墙.

  8. 解决Android Studio在Ubuntu上出现“sdk/platform-tools/adb: error=2, No such file or directory”的方法

    转载至http://blog.163.com/china_uv/blog/static/11713726720136931132385/ 刚安装Ubuntu14.5时运行Android Studio可 ...

  9. kindle試玩

    Q:試玩感受如何? Pros 按這個版本,沒有燈,在光纖不好的時候看起來很累.但陽光好的時候看起來很爽 重量很輕,比手機邀請很多 看書很容易沉浸下去,這一點比收集好狠毒 Cons 網上說看pdf不大行 ...

  10. 1T硬盘获3T体验 彻底解决NVR存储时间短的问题

    随着高清技术的进步,现在300W和400W的IPC越来越普及,但同时带来了更多的成本及存储便利问题.“硬盘存了7天就满了”.“同样大小的硬盘,存储时间越来越短”......为啥你的NVR不能存更长的时 ...