求和可被k整除的最长子阵。
在O(N)中有可能吗?
如果不是,那么它能做得比n^2好吗?
最佳答案
让s[i] = sum of first i elements modulo K
。
我们有:
s[i] = (s[i - 1] + a[i]) % K
我们必须为每个
i
找到最小的j
,这样s[i] == s[j]
。您可以通过对s[i]
值进行散列来找到这一点。如果K
很小,您可以只保留一个数组p[i] = first position for which s[k] == i
。复杂性为
O(n)
。关于arrays - 查找最长的子数组,其和可被K整除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13089010/