让我们看一下前缀和。一个
[L, R]子阵列由3当且仅当divisble
prefixSum[L - 1] mod 3 = prefixSum[R] mod 3。这个观察给出了一个非常简单的线性解(因为前缀和mod
3只有3个可能的值,我们可以简单地找到第一个和最后一个)。
例如,如果输入数组为{1、2、3,-4,-1},则前缀和为{0、1、0、0、2、1}。(由于前缀为空,所以存在n
+1个前缀和)。现在,您只需看一下第一个和最后一个出现的0、1和2。

让我们看一下前缀和。一个
[L, R]子阵列由3当且仅当divisble
prefixSum[L - 1] mod 3 = prefixSum[R] mod 3。这个观察给出了一个非常简单的线性解(因为前缀和mod
例如,如果输入数组为{1、2、3,-4,-1},则前缀和为{0、1、0、0、2、1}。(由于前缀为空,所以存在n
+1个前缀和)。现在,您只需看一下第一个和最后一个出现的0、1和2。