2017-08-31 61 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

相关问题