在 Java 中编写一个模式方法,以查找数组中最常出现的元素
问题是:
编写一个名为 mode 的方法,该方法返回整数数组中最常出现的元素。假定数组至少有一个元素,并且数组中的每个元素都有一个介于 0 和 100 之间的值(包括 0 和 100)。通过选择较低的值来打破关系。
例如,如果传递的数组包含值 {27, 15, 15, 11, 27},则方法应返回 15。(提示:您可能希望查看本章前面的Tally程序,以了解如何解决此问题。
下面是我的代码,除了单元素数组之外,它几乎有效
public static int mode(int[] n)
{
Arrays.sort(n);
int count2 = 0;
int count1 = 0;
int pupular1 =0;
int popular2 =0;
for (int i = 0; i < n.length; i++)
{
pupular1 = n[i];
count1 = 0; //see edit
for (int j = i + 1; j < n.length; j++)
{
if (pupular1 == n[j]) count1++;
}
if (count1 > count2)
{
popular2 = pupular1;
count2 = count1;
}
else if(count1 == count2)
{
popular2 = Math.min(popular2, pupular1);
}
}
return popular2;
}
编辑:终于想通了。更改为现在一切工作!count1 = 0;
count1 = 1;