滑动窗口的最大值
设定划定窗口的长度,在给定列表上做滑动,求每次滑动的最大值
nums, k = [1,3,-1,-3,5,3,6,7], 3 result = [] # method 1:bf for i in range(len(nums)-k+1): result.append(max(nums[i:i+k])) print(result) # method 2:保存中间过程 result = [] first_max = max(nums[:k]) result.append(first_max) for i in range(1, len(nums)-k+1): if first_max == nums[i-1]: first_max = max(nums[i:i+k]) result.append(first_max) else: first_max = max(first_max, nums[i+k-1]) result.append(first_max) # method 3: heap (n*lgk) nums, k = [1,3,-1,-3,5,3,6,7], 3 nums = [-e for e in nums] result = [] for i in range(len(nums)-k+1): temp = nums[i:i+k] heapq.heapify(temp) result.append(-heapq.heappop(temp)) result # method 4: both end queue nums, k = [1,3,-1,-3,5,3,6,7], 3 n = len(nums) q = deque() for i in range(k): # 保持队首是最大值 while q and nums[i] >= nums[q[-1]]: q.pop() q.append(i) result = [nums[q[0]]] for i in range(k, n): while q and nums[i] >= nums[q[-1]]: q.pop() q.append(i) while q[0] <= i-k: q.popleft() result.append(nums[q[0]]) result
时刻记着自己要成为什么样的人!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2021-09-08 最长连续序列
2021-09-08 二叉树中的最大路径和-Python
2018-09-08 pandas的replace方法
2018-09-08 python的tqdm模块
2018-09-08 pandas的merge方法
2018-09-08 pandas的drop函数
2018-09-08 2018-文本分类文献阅读总结