LeetCode题解(Offer59I):计算数组中滑动窗口的最大值(Python)
发布日期:2021-06-29 20:01:00
浏览次数:2
分类:技术文章
本文共 1560 字,大约阅读时间需要 5 分钟。
题目:(简单)
标签:数组、队列、滑动窗口
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | 平均时间复杂度 = O ( N ) O(N) O(N) ; 最坏时间复杂度 = O ( ( N − K ) × K ) O((N-K)×K) O((N−K)×K) | O ( K ) O(K) O(K) | 56ms (99.27%) |
Ans 2 (Python) | O ( N ) O(N) O(N) | O ( K ) O(K) O(K) | 68ms (91.03%) |
Ans 3 (Python) |
解法一:
class Solution: def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]: if not nums: return [] ans = [max(nums[:k])] for i in range(k, len(nums)): if nums[i] >= ans[-1]: ans.append(nums[i]) elif nums[i - k] == ans[-1]: ans.append(max(nums[i - k + 1:i + 1])) else: ans.append(ans[-1]) return ans
解法二(双向队列):
class Solution: def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]: # 处理特殊情况 if not nums or k == 0: return [] if k == 1: return nums # 初始化滑动窗口队列 queue = collections.deque() max_idx = 0 for i in range(k): if queue and queue[0] == i - k: queue.popleft() while queue and nums[queue[-1]] < nums[i]: queue.pop() queue.append(i) if nums[i] > nums[max_idx]: max_idx = i ans = [nums[max_idx]] # 遍历并滑动窗口 for i in range(k, len(nums)): if queue and queue[0] == i - k: queue.popleft() while queue and nums[queue[-1]] < nums[i]: queue.pop() queue.append(i) ans.append(nums[queue[0]]) return ans
转载地址:https://dataartist.blog.csdn.net/article/details/108637466 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月06日 15时42分42秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
“老外学中文“-开发进度
2019-04-30
我的mac pro,今后我们要一起加油啦!
2019-04-30
Huffman编码
2019-04-30
多台上网设备出现上网卡问题
2019-04-30
独立游戏市场营销策略:社交营销篇
2019-04-30
在cocos2d里面如何拖拽精灵
2019-04-30
UI界面设计标准,包括iPad mini和iPhone5。
2019-04-30
如何确定你的新点子是否靠谱
2019-04-30
App Store邮箱列表
2019-04-30
iOS 和 Android 的后台推送工作原理各是如何?有什么区别?
2019-04-30
关于UIWebView的一些事
2019-04-30
iOS程序运行主要步骤
2019-04-30
使用github管理iOS分布式项目开发
2019-04-30
yqzj微信公众号&小程序开发
2019-04-30
【iPhone】网络编程–一起来做网站客户端(一)
2019-04-30
使用test flight让别人运行你的app
2019-04-30
Andriod开发学习资源
2019-04-30
如何在使用Cocos2D中实现A星(A*)寻路算法
2019-04-30
iOS应用崩溃日志分析
2019-04-30
vue 大致总结一
2019-04-30