“支配着” 是在数组中出现频率超过一半的整数,例如{3, 2, 3, 3, 0, 2, 3, 4, 3},其中3出现5次,5除以9大于0.5,所以3是支配者。写一个函数,在给定的整数数组中找出支配者是多少,如果一个数组中没有支配者,则返回1.
package cn.usst.DataTest5;
import java.util.Arrays;
public class DataTest5 {
/**
* “支配着” 是在数组中出现频率超过一半的整数
* @param args
*/
public static void main(String[] args) {
int[] ints = {3, 2, 3, 3, 0, 2, 3, 4, 3};
int j = judge(ints);
if(j == -1){
System.out.println("No dominator");
}else{
System.out.println("The dominator is : " + ints[j]);
}
}
private static int judge(int[] ints) {
Arrays.sort(ints);
int counter = 1;
for(int i=0; i< (ints.length-1); i++){
if(ints[i] == ints[i+1]){
counter++;
if((((double)counter) / ints.length) > 0.5){
return i ;
}
}else{
counter = 1;
}
}
return -1;
}
}