此代码只能在单模式存在时获得模式。我想知道当存在2种模式时如何返回-1。例如:1 1 1 2 2 2 3.当没有模式时返回-1,1 2 3 4 5 6。
public Long getMode() {
long [] num = this.getElements();
long maxValue=0, maxCount=0;
for (int i = 0; i < num.length; ++i){
long count = 0;
for (int j = 0; j < num.length; ++j){
if (num[j] == num[i])
++count;
}
if (count > maxCount){
maxCount = count;
maxValue = num[i];
}
}
return maxValue;
}
答案 0 :(得分:0)
您的代码工作正常,但如果没有模式,或者存在2种模式,则不会返回-1
。
为此,您可以按如下方式更改程序:
(我已经改变了我已经改变过的部分)
public static Long getMode() {
long [] num = this.getElements();
long maxValue=0, maxCount=0;
boolean err = false; // New vraible to check if there is an error.
for (int i = 0; i < num.length; ++i){
long count = 0;
for (int j = 0; j < num.length; ++j){
if (num[j] == num[i])
++count;
}
if(count==maxCount && maxValue!=num[i]){ // if there are two modes
err=true; // then set err to true.
}else if (count > maxCount){
maxCount = count;
maxValue = num[i];
err = false; // If valid mode is found, then set err to false.
}
System.out.println(err);
}
return err ? -1 : maxValue; // return value if err is false, else return -1
}