降低复杂性,找到具有给定总和的子阵列

时间:2013-07-03 06:48:16

标签: c algorithm

我正在尝试编写一个问题,我必须找到给定数组的给定数组的连续子数组。我想要做的是使用从0到n的循环i和从i到n的另一个循环,并使用它来计算所有子阵列总和。但我认为解决方案的时间复杂性可以进一步降低。我只是无法弄清楚如何。问题可以转换为DP吗? 我需要找到子阵列的总数。

1 个答案:

答案 0 :(得分:1)

For positive numbers only

将变量curr_sum初始化为第一个元素。 curr_sum表示sum of current subarray。从第二个元素开始,将所有元素逐个添加到curr_sum。如果curr_sum等于sum,则打印解决方案。如果curr_sum超过sum,则在curr_sum大于sum时删除尾随元素。

这个算法将给出第一个正确的答案。可能存在多个子阵列作为答案。 ``

复杂性:O(n)