我正在尝试编写一种算法,该算法将返回仅包含正整数的排序数组True/False
中的连续序列是否可以总计为.N
例如:
Array = { 1, 2, 3, 4 };
6 is good! 1 + 2 + 3 = 6
8 is not good! 1 + 3 + 4 = 8, but it's not contiguous, since we skipped the 2.
这是我试图做的:
int[] arr = ...;
int headIndex = 1, tailIndex = 0, sum = arr[0];
while (sum != n)
{
if (sum < n)
{
sum += arr[headIndex++];
}
if (sum > n)
{
sum -= arr[tailIndex++];
}
}
return sum == n;
显然上述方法不起作用(在某些情况下它可能会陷入无限循环)。有什么建议么?
一件事我之前没有提到,而且非常重要——算法的复杂度必须尽可能低。