【发布时间】:2022-01-23 06:53:46
【问题描述】:
import java.io.*;
import java.util.*;
public class FrequentValue {
public static void main(String[] args){
int n[] = {6, 6, 2, 6, 4, 2, 2, 6, 2 };
freqVal(n);
}
public static int freqVal(int[] n) {
int[] count = new int[10000];
int maxCount = 0;
int val = 0;
for(int i = 0; i < n.length; i++) {
count[n[i]]++;
if(count[n[i]] > maxCount) {
maxCount = count[n[i]];
val = n[i];
}
}
System.out.println(val);
return val;
}
}
嗨,
所以我的代码打印了数组中出现最多的值。一项规定是,如果多个值出现最多,则打印最接近输入开头的值。当我使用自己的值在自己的 IDE 中对其进行测试时,我认为就是这种情况。然而,当我在 LeetCode 中的一个练习题中使用它时,我得到了不同的结果,因为它使用了不同的测试用例。我不确定问题可能是什么。也许以这种方法做是错误的?
【问题讨论】:
-
n9999的一个元素的最大值是多少? -
我只能按照您所说的进行,但在我看来,您的解决方案不符合要求。您说“打印最接近输入开头的值”,但您的解决方案会返回首先达到该最大值的数字。例如,如果给您“1,1,2,2,2,1”,那么您将返回 2(因为它的计数永远不会超过),但 1 以相同的最大计数绘制,并且 1 看起来更接近比 2 开始。