我在java中有一个函数,可能有bug,我找不到它

时间:2017-08-31 16:42:35

标签: java arrays

我有这个代码,它假设执行以下任务: 例如,给定M = 3,并且数组构建如下:

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 个答案:

答案 0 :(得分:1)

1 1 1 1 5 5 5 5 5这是您的代码可能失败的情况。检查并更新循环外的最大出现变量。我希望以上案例足以说明我的观点。