Java 求其和可被复杂度为O(N)的3整除的最长子数组
我这里有一个大问题,如果你能看到下面的代码,你会看到O(N)复杂度的代码。我只想把它减少到O(N^2), 我很难用O(N)做这件事,但没有任何安全措施Java 求其和可被复杂度为O(N)的3整除的最长子数组,java,arrays,recursion,complexity-theory,Java,Arrays,Recursion,Complexity Theory,我这里有一个大问题,如果你能看到下面的代码,你会看到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; } p
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;
}
私有静态int f(int[]a,int低,int高)
{
int res=0;
对于(int i=低;i两个示例:
int[]a={1,2,4,1};
output:2==>如果你能看到(1+2=3),(2+4=6),那就是%3=0=>因为数字是2,因为是两个子数组,给我%3=0。
int[]a={3,4,4,2};
output:2
int[]a={3,3,3,0,1};
output:5
int[]a={3,2,7,6,6,1}
output:5只需在数组上迭代一次,如果当前项可被3整除,则增加一个count
变量。将count
复制到另一个变量max
并在当前项不可被3整除时重置count
。您能先解释一下您的代码吗?您说过您想找到一个子数组,但都没有你返回的是一个数字。首先,请添加一些示例(输入参数,预期结果)。嘿,geys,两个示例:不要插入示例作为答案!你可以将示例附加到你的开场白中。