2017-01-27 7 views
0

ここでは大きな疑問があります。コードの下にO(N)複雑さのコードがあります。 O(N^2)、 私はO(N)でそれをするtreidを減らすことを試みます。 exempleのO(N)Complexityで3で割り切れる最長の部分配列を見つけてください。

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

ちょうど現在のアイテムが別の変数 'max' 3.コピー' count'で割り切れる場合 'count'変数をインクリメントし、アレイ上回反復現在の項目が3で割り切れないときには 'count'をリセットします。 – rom1v

+0

あなたのコードを最初に説明できますか?あなたは*サブアレイ*を探したいと言っていますが、あなたが戻ってくるのは*番号*です。 – Holger

+0

まず、いくつかの例(入力引数、期待される結果)を追加してください。 –

答えて

0

カップル: int[] a={1,2,4,1};出力:2 ==>あなたが見ることができる場合は、(1 + 2 = 3)、(2 + = 6 4)ので、それらは%3 = 0である==> beacuseその数字は2です。私は%3が0になる2つのサブアレイがあります。 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

+0

答えとして例を挿入しないでください!代わりにあなたのオープニングポストにサンプルを追加することができます。 –

関連する問題