【发布时间】:2014-12-19 09:28:15
【问题描述】:
给定长度为 n 的随机数(正数和负数)数组,我想要总和为零的连续子数组。
示例:
假设我有数组a={1, -1 ,2 , -2, 6, -6},输出将是6,因为子数组如下:
1 -1 & 2 -2 & 6 -6 & 1 -1 2 -2 & 2 -2 6 -6 & 1 -1 2 -2 6 -6
我知道强力解 O(n^2),我想要任何其他解 O(n) 或 O(n log n)?
【问题讨论】:
-
我不认为
contiguous sub-arrays sum问题有O(n), or O(n log n)解决方案.. -
由于可能的子数组的总数是 O(n^2),我怀疑你会想出一个比这更好的通用算法。如果你这样做,它必须是一种不仅仅枚举子数组的方法。考虑这个困难的情况:{6,0,0,...0,0,-6}。
-
考虑 { 0, 0, ... 0, 0 },现在所有的总和都为零,你必须输出很多东西。
-
仅供参考:我认为@DavidEisenstat 证明我错了,如下。
标签: algorithm