繁体   English   中英

查找所有总和等于零的不间断子序列

[英]Find all uninterrupted subsequences whose sum is equal to zero

假设我们有一个由N个整数组成的数组,并且想要找到具有等于零的和的连续元素的所有子序列。

例:

N = 9
array = [1, -2, 4, 5, -7, -4, 8, 3, -7]

应该输出:

1 4 

4 7

5 8

1 8

因为上面的每个都是和等于零的子序列的开始和结束索引。

我得出的结论是,如果使用一种穷举搜索所有可能解的朴素算法,那么就有N * (N + 1) / 2这样的可能子序列会以O(N ^ 2)复杂度得出结论。

我想知道是否有任何方法可以实现O(N)复杂度或小于O(N ^ 2)的目标?

我知道子集和问题是一个NP完全问题,但是我的问题似乎要容易一些,因为它只需要连续元素的子序列。

先感谢您。

比你想的还要糟。

潜在的Θ(n²)不间断子序列加起来等于零,如以下示例所示:

0 0 0 0 0 0 0 0 0

(这里, 每个子序列加起来为零。)

因此,任何打印出所有所需子序列的开始和结束索引的算法都将必然具有o(n²)最坏情况的复杂性。 打印出它们的元素将需要Θ(n³)时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM