LeetCode-239-剑指offer-滑动窗口的最大值-队列与栈-python
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了LeetCode-239-剑指offer-滑动窗口的最大值-队列与栈-python,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1049字,纯文字阅读大概需要2分钟。
内容图文
![LeetCode-239-剑指offer-滑动窗口的最大值-队列与栈-python](/upload/InfoBanner/zyjiaocheng/663/f80cd363a1164db3b77a115ea6e7ad4f.jpg)
给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6,[2,5,1]}。
思路:
class Solution: def maxInWindows(self, num, size): # write code here if not num: return [] if size ==0: return [] if len(num)==1: return num temp,res = [0],[] #数组temp中存放着当前窗口的最大值,和按需排列好的次大值, # 这些次大值在数组中的位置只能是位于最大之后的, # 数组 temp 的最大规模为 size -1。 for i in range(len(num)): # temp[0]中记录第一个最大值的标号(位置) if i-temp[0]>size-1: #代表第一个最大值的位置到当前位置,超出了长度为(size-1)的选定框 temp.pop(0)#所以去掉第一个最大值 while len(temp) !=0 and num[i] >= num[temp[-1]]:#当num当前的值大于或等于num次大值后,替换次大值 temp.pop() temp.append(i) if i>=size-1:#如果当前坐标大于选定框长度,则将最大值放入res表 res.append(num[temp[0]]) return res
内容总结
以上是互联网集市为您收集整理的LeetCode-239-剑指offer-滑动窗口的最大值-队列与栈-python全部内容,希望文章能够帮你解决LeetCode-239-剑指offer-滑动窗口的最大值-队列与栈-python所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。