2017-08-31 39 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個事件的數組元素也許是 – 2017-08-31 16:47:12

回答

1

1 1 1 1 5 5 5 5 5這是您的代碼可能失敗的情況。檢查並更新循環外的最大發生變量。以上案例給我足夠的正義,我希望。

+0

是的可能是問題 – ErezN

+0

這是我在網上比賽中解決問題時反覆做的最常見的錯誤。這些案件實際上很難弄清楚。 – pvkcse

+0

@ErezN也M應該是最大(array_elements)+1。 – pvkcse

相關問題