LC 6919. 使数组中的所有元素都等于零

https://leetcode.cn/problems/apply-operations-to-make-all-array-elements-equal-to-zero/

这题思路不是特别复杂:

但是这个 “对后面 K-1 个元素减去 A[i]” 操作复杂度有点高,之前接触过差分数组这个概念,感觉是可以用在这个地方的。

这题有个需要注意的地方就是结尾,当我们处理 A[n-1]之后,我们还需要确保 C后面的元素(k-1)个都是 0.

class Solution:
    def checkArray(self, nums: List[int], k: int) -> bool:
        if k == 1: return True
        n = len(nums)
        C = [0] * (n + k)

        c = 0
        for i in range(n):
            c -= C[i]
            v = nums[i] - c
            if v < 0: return False
            C[i + k] = v
            c += v

        if sum(C[-(k - 1):]) != 0: return False
        return True