我有这个代码,它假设执行以下任务: 例如,给定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];
}
}
可能是什么问题,因为它并不总是有效,我可以看到我的程序中存在错误。
答案 0 :(得分:1)
1 1 1 1 5 5 5 5 5这是您的代码可能失败的情况。检查并更新循环外的最大出现变量。我希望以上案例足以说明我的观点。