标签:规划 EAP image bsp tco turn else 技术 img
题目描述:
方法一:动态规划 O(n)
class Solution: def constrainedSubsetSum(self, nums, k: int): dp = [0]*len(nums) dp[0] = nums[0] arr = [(nums[0],0)] for i in range(1,len(nums)): M = arr[0][0] if M>=0:dp[i] = M+nums[i] else:dp[i] = nums[i] while arr and dp[i]>=arr[-1][0]: arr.pop() arr.append((dp[i],i)) while arr[0][1]<(i-k+1): arr.pop(0) return max(dp)
方法二:堆
class Solution: def constrainedSubsetSum(self, nums: List[int], k: int) -> int: hq,s=[],-100000 heapq.heappush(hq,(0,len(nums))) for i,x in enumerate(nums): while hq[0][1]<i-k: heapq.heappop(hq) t=-hq[0][0]+x s=max(s,t) heapq.heappush(hq,(-t,i)) return s
标签:规划 EAP image bsp tco turn else 技术 img
原文地址:https://www.cnblogs.com/oldby/p/12781279.html