Java面试宝典找出数组中重复元素最多的数
目录
Java面试宝典——找出数组中重复元素最多的数
package demos.array;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* @author wyl
* @time 2018年7月9日下午3:17:24
*/
public class FindMostInArray {
/**
* 方法一:空间换时间。
* 可以定义一个计数数组int count[101],
* 用来对数组中数字出现的次数进行计数(只能针对数组中数字的范围1~100),
* count数组中最大的元素对应的下标,即为出现次数最多的那个数
* @param a
* @return
*/
public static int findMostInArray(int[] a){
int[] count=new int[101];
for(int i=0;i<a.length;i++){
count[a[i]]++;
}
int maxCount=count[0];
int maxNumber=a[0];
for(int i=0;i<100;i++){
maxCount=count[i]>maxCount?count[i]:maxCount;
}
for(int i=0;i<100;i++){
if (count[i]==maxCount) {
maxNumber=i;
}
}
return maxNumber;
}
/**
* 方法二:使用Map映射表
* @param a
* @return
*/
public static int findMostInArray2(int[] a){
int res=0;
Map<Integer , Integer> map=new HashMap<>();
for(int i=0;i<a.length;i++){
if (!map.containsKey(a[i])) {
map.put(a[i], 1);
}else {
map.put(a[i], map.get(a[i])+1);
}
}
//找出出现次数最多的元素
int most=0;
Iterator iterator=map.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry entry=(Map.Entry) iterator.next();
int key=(int) entry.getKey();
int value=(int) entry.getValue();
if (value>most) {
res=key;
most=value;
}
}
return res;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a={1,1,2,2,4,4,4,4,5,6,6,6,6,6,6,6};
System.out.println("方法一:"+findMostInArray(a));
System.out.println("方法二:"+findMostInArray2(a));
}
}