arrays - 找到其和可被 K 整除的最长子数组

标签 arrays algorithm data-structures

找到其和能被 K 整除的最长子数组。 在 O(n) 中可能吗? 如果不能,可以用比 n^2 更好的方式完成吗?

最佳答案

s[i] = 前 i 个元素的总和模 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/

相关文章:

c - 结构数组在声明时存储垃圾

java - 使用 ArrayList 的 android java insertsort

algorithm - 最长路径的颜色编码算法

c - 尝试制作链表,出现段错误

c - 通过指针表示法写入二维数组

c++ - C++ 中大于指定大小的数组

c++ - 访问数组之外​​的内存,二叉堆树

algorithm - 由多个圆组成的相交区域数

c# - 如何将 LINQ 结果传递给方法?

c - C中有向图中的DFS遍历