找到最长的子阵列,其总和可用O(N)复杂度整除3

时间:2017-01-27 08:53:43

标签: 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;
    }

    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;
    }

1 个答案:

答案 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