数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
package com.example.study;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
*author:bingbing
*日期:2020年7月4日
*时间:下午3:12:46
*数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
*/
public class demo03 {
public static void main(String[] args) {
int a[]=new int[] {1, 2, 3, 2, 2, 2, 5, 4, 2};
Map<Integer,Integer> countMap=new HashMap<Integer,Integer>();
int count=0;
System.out.println(Arrays.toString(a));
for(int i=0;i<a.length;i++) {
if(countMap.containsKey(a[i])) {
countMap.put(a[i], countMap.get(a[i])+1);
}else {
countMap.put(a[i], count+1);
}
}
//找出map中key对应的value的值大于数组长度一半的值。
int length=a.length/2;
for(Object key:countMap.keySet()) {
if(countMap.get(key)>length) {
System.out.println("该数字为:"+key);
}
}
}
}