用于处理列表的所有连续子序列的朴素代码的算法复杂性:n^2 或 n^3?
2022-09-01 12:25:38
我正在学习测试,发现了这个问题:
我无法真正确定复杂性,我认为它要么是O(n2)要么是O(n3),我倾向于O(n3)。
有人能告诉我它是什么,为什么吗?
我的想法是O(n2)是因为在循环中,它给出了一个三角形的形状,然后循环从到,我认为这是三角形的另一半。j
j = i
k
i + 1
j
public static int what(int[] arr)
{
int m = arr[0];
for (int i=0; i<arr.length; i++)
{
for (int j=i; j<arr.length;j++)
{
int s = arr[i];
for (int k=i+1; k<=j; k++)
s += arr[k];
if (s > m)
m = s;
}
}
return m;
}
另外,如果你能告诉我它的作用?
我认为它返回数组中正整数或最大整数的加法。
但是对于像它返回的数组,我认为这是因为它有错误。如果不是,我不知道它做了什么:{99, -3, 0, 1}
99
{99, 1} => returns 100
{-1, -2, -3} => return -1
{-1, 5, -2} => returns 5
{99, -3, 0, 1} => returns 99 ???