class Solution:def maxResult(self, nums: List[int], k: int) -> int:if not nums:return 0 # 初始化堆 l = []heapq.heappush(l, (-nums[0], 0))# 开始进行优先队列操作n = len(nums)value = nums[0]for i in range(1, n):# 将出界(j<i-k)的元素出队while l[0][1] < i-k:heapq.heappop(l)# 获取最大值value = nums[i] - l[0][0]heapq.heappush(l, (-value, i))return value
class Solution:def maxResult(self, nums: List[int], k: int) -> int:if not nums:return 0 # 初始化队列q = collections.deque([[nums[0], 0]])n = len(nums)value = nums[0]# 队列操作for i in range(1, n):# 清除下标范围外的数据while q[0][1] < i - k:q.popleft()# 更新当前值value = nums[i] + q[0][0]# 更新单调队列while q and q[-1][0] < value:q.pop()q.append([value, i])return value
本文发布于:2024-02-01 00:40:14,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170671921432573.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |