我在这里有一个很大的问题,如果您在下面看到代码,您会看到具有O(N)复杂性的代码。我只是试着把它减少到O(N ^ 2), 我很想用O(N)来做,但没有任何障碍。
private static int f (int[]a, int low, int high)
{
int res = 0;
for (int i=low; i<=high; i++)
res += a[i];
return res;
}
public static int what (int []a)
{
int temp = 0;
for (int i=0; i<a.length; i++)
{
for (int j=i; j<a.length; j++)
{
int c = f(a, i, j);
if (c%3 == 0)
{
if (j-i+1 > temp)
temp = j-i+1;
}
}
}
return temp;
}
答案 0 :(得分:0)
int[] a={1,2,4,1};
输出:2 ==&gt;如果你能看到(1 + 2 = 3),(2 + 4 = 6)那么那些是%3 = 0 ==&gt;因为数字是2 beacuse是两个子组,给我%3 = 0。
int[] a={3,4,4,2};
输出:2
int[] a={3,3,3,3,0,1};
输出:5
int[] a={3,2,7,6,6,1};
输出:5