“支配着” 是在数组中出现频率超过一半的整数,求一个数组中的支配者

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

}


posted on 2017-04-17 12:44  blfbuaa  阅读(145)  评论(0编辑  收藏  举报