Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 求其和可被复杂度为O(N)的3整除的最长子数组_Java_Arrays_Recursion_Complexity Theory - Fatal编程技术网

Java 求其和可被复杂度为O(N)的3整除的最长子数组

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

我这里有一个大问题,如果你能看到下面的代码,你会看到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;
    }
私有静态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,两个示例:不要插入示例作为答案!你可以将示例附加到你的开场白中。