1425. Constrained Subsequence Sum
https://leetcode.com/problems/constrained-subsequence-sum/
Input: nums = [10,2,-10,5,20], k = 2
Output: 37
Explanation: The subsequence is [10, 2, 5, 20].Input: nums = [-1,-2,-3], k = 1
Output: -1
Explanation: The subsequence must be non-empty, so we choose the largest number.Input: nums = [10,-2,-10,-5,20], k = 2
Output: 23
Explanation: The subsequence is [10, -2, -5, 20].class Solution:
def constrainedSubsetSum(self, nums: List[int], k: int) -> int:
N = len(nums)
dp, q = [0] * N, collections.deque()
for i, v in enumerate(nums):
f = i - k
r = max((0 if len(q) == 0 else q[0]) + v, v)
dp[i] = r
if f >= 0 and dp[f] == q[0]:
q.popleft()
while len(q) > 0 and r > q[-1]:
q.pop()
q.append(r)
return max(dp)Last updated