2017-02-06 1 views
1

配列内で最大の連続する1の数を求められました。 [1,0,1,1]、回答がなければならない2.入力が非常に大きくなると、findConsecutiveOnes Javaコードに問題が発生します。なぜですか?

に、手段

はIコードを書き、入力が小さいアレイである場合にはうまく機能します。

public int findMaxConsecutiveOnes(int[] nums) { 
    if (nums == null) return 0; 

    int max = 0; 
    int finalMax = 0; 

    for (int i = 0; i < nums.length; i++) { 
     if (nums[i] == 1){ 
      max += 1; 
     } else { 
      if (max != 0) finalMax = max; 
      max = 0; 
     } 
     finalMax = Math.max(max, finalMax); 
    } 
    return finalMax; 
} 

しかし、あなたは2840年の1の配列をしようとすると、それは2317を返します。私は私のコードが間違っているのか分かりません。誰かが私に手がかりを与えることができますか?

ありがとうございました!

+0

なぜ0になったときに 'finalMax = max'を設定していますか? – shmosel

+0

私はこの時点で最大値を覚えているので....ああ!私は、これを行う必要はないことがわかりますか?私の次のステップは、値を格納することです....ああ... –

+0

また、ここでサイズが問題になる可能性は低いです。入力したパターンを調べてください。特定の(できればより短い)例を投稿すると、それが役に立ちます。 – shmosel

答えて

-1
public int findMaxConsecutiveOnes(int[] nums) { 
    if (nums == null) return 0; 

    int max = 0; 
    int finalMax = 0; 

    for (int i = 0; i < nums.length; i++) { 
     if (nums[i] == 1){ 
      max += 1; 
     } else { 
      finalMax = Math.max(max, finalMax); 
      max = 0; 
     } 

    } 
    finalMax = Math.max(max, finalMax); 
    return finalMax; 
} 
関連する問題