Constrained Subsequence Sum
HardArrayDynamic ProgrammingQueueSliding WindowHeap (Priority Queue)Monotonic Queue
Solution
export function constrainedSubsetSum(nums: number[], k: number): number {
const queue: number[] = [];
for (let i = 0; i < nums.length; i++) {
nums[i] += queue[0] ?? 0;
while (0 < queue.length && queue[queue.length - 1] < nums[i]) {
queue.pop();
}
if (0 < nums[i]) {
queue.push(nums[i]);
}
if (k <= i && queue[0] === nums[i - k]) {
queue.shift();
}
}
return nums.reduce((prev, curr) => Math.max(prev, curr), Number.MIN_SAFE_INTEGER);
}