“支配着” 是在数组中出现频率超过一半的整数,求一个数组中的支配者
“支配着” 是在数组中出现频率超过一半的整数,比如{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; } }