2017-08-31 34 views
-5

を見つけることができない私はこの次のタスクを実行するために仮定したコードがあります。このように構築されたM = 3与え例えば 、および配列:私はバグを持っていることが、Javaの機能を持っていると私はそれを

A[0]=1 
A[1]=1 
A[2]=3 
A[3]=3 
A[4]=5 
A[5]=1 
A[6]=3 

機能は、それが常に動作していないと私は私のプログラムにバグがある見ることができるので問題になることができるもの1または3

import java.util.*; 

class Solution { 
    int solution(int M, int[] A) { 
     int N = A.length; 
     int[] count = new int[M + 1]; 
     for (int i = 0; i <= M; i++) 
      count[i] = 0; 
     int maxOccurence = 1; 
      int index = -1; 
      for (int i = 0; i < N; i++) { 
       if (count[A[i]] > 0) { 
        int tmp = count[A[i]]; 
        if (tmp > maxOccurence) { 
         maxOccurence = tmp; 
         index = i; 
        } 
        count[A[i]] = tmp + 1; 
       } else { 
        count[A[i]] = 1; 
       } 
      } 
      return A[index]; 
     } 
    } 

を返すことがあります。

+1

* "関数は1または3を返すことがあります" * - なぜですか?どのようなロジックが起こるはずですか?この要件だけが 'return 3;'が有効な実装であるとすれば、 – luk2302

+0

入力Mとは何ですか?その目的は何ですか?言い換えれば、あなたの仕事は何を達成しようとしていますか?あなたは、あなたの例が1または3を返すと言うので、それはモードを計算しようとしていますか? – sharur

+0

M以上の出現数を持つ配列要素はおそらく –

答えて

1

1 1 1 5 5 5 5 5これは、コードが失敗する場合があります。ループ外で最大出現変数も確認して更新してください。上記の場合は、私の意見に十分な正義を与える、私は願っています。

+0

ええ、問題がある可能性があります – ErezN

+0

これは、私がオンラインコンテスト中に問題を解決するときに私が繰り返し行う最も一般的な間違いです。これらのケースは実際には分かりません。 – pvkcse

+0

@ErezN Mもmax(array_elements)+1でなければなりません。 – pvkcse

関連する問題