【发布时间】:2017-09-10 18:40:31
【问题描述】:
正如标题所述,我需要找到数组的模式。但是,对此有一些规定:
1) 如果不存在模式(即每个元素只出现一次或相等的次数)返回Double.NaN
2) 如果存在多个模式(即{1,2,2,3,4,5,5,6} 将给出两种模式,2 和 5)返回 Double.NaN
基本上,如果它肯定是数组的模式,它应该只返回数组的元素,并且比所有其他元素至少出现一次。任何其他时间,它应该返回Double.NaN
我当前的代码返回一个模式。但是,如果两个数字同样出现,则返回两者中的后者作为模式,而不是 NaN。此外,如果不存在模式,则不返回 NaN。
感谢任何帮助。
这是我目前所拥有的:
public double mode(){
double[] holder = new double[data.length];
double tempMax = 0, permMax = 0, location = 0, arrayMode = 0;
for (int i = 0; i < data.length; ++i) {
int count = 0;
for (int j = 0; j < data.length; ++j) {
if (data[j] == data[i])
++count;
}
holder[i] = count;
}
for (int w = 0; w < holder.length; w++){
if (holder[w] > tempMax){
tempMax = holder[w];
arrayMode = data[w];
}
}
permMax = arrayMode;
return permMax;
}
【问题讨论】:
-
几乎没有理由不将 mode 设为带有 double[] 参数的静态方法