查找除以n的子数组的有效方法

时间:2019-07-18 18:05:05

标签: algorithm data-structures time-complexity

我有一个N大小的数组A,其中包含自然数。

我需要找到一种有效的算法,该算法可以找到一对索引,以便子数组元素A [i..j]的总和除以N而不用提醒。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

主要观察结果是:

  • sum( A [ i .. j ])== sum( A [1 .. < em> j ])− sum( A [1 ..( i −1)])
  • so N 除且仅当sum( A [ i .. j ]) A [1 ..( i −1)])和sum( A [1 .. j ] )是一致的 N
    • 即,如果sum( A [1 ..( i -1)])和sum( A [1 .. j ])的余数相同时,除以 N

因此,如果您遍历数组并计算“到目前为止的总和”,并跟踪已经看到的余数以及看到它们的索引,那么可以在 O 中进行此操作( N )时间和 O N )多余空间。