优先队列
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
小黑生活
形势的不好,毕业的焦虑,迎难而上
晚饭跟小老黑见面啦,吃辣喝酒窜稀之旅
周六早上麦当劳40min学习
互联网上充斥着焦虑
下午和深沉去木樨园洗浴搓澡
晚上小汤2第26课打卡
练完琴,去剪个头啦
英语阅读
夜宵啤酒牛排
周日上午的笔试,三道算法题轻松ko!!
下午跟尚香去国贸喝咖啡写论文
英语阅读+钢琴练习
早上早餐、跑步、读英语