一组数字 挑选出出现频率最高的
3 2 5 2 3 4 2 3
最高的 是 2 和3
------解决方案--------------------
我的笨方法:
- Java code
import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Map.Entry;public class MaxAppear { /** * <p>功能描述:执行</p> * @param intArray * @return * @author:jack * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述] */ public List<Integer> go(int[] intArray) { List<Integer> list = new ArrayList<Integer>(); Map<Integer, Integer> map = this.init(intArray); for(int i : intArray) { map.put(i, map.get(i)+1); } this.calc(map, list); return list; } /** * <p>功能描述:计算出现最多的数字,存到List中</p> * @param map * @param list * @author:jack * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述] */ private void calc(Map<Integer, Integer> map, List<Integer> list) { Integer max = Integer.MIN_VALUE; list.add(max); for(Entry<Integer, Integer> entry : map.entrySet()) { Integer key = entry.getKey(); Integer value = entry.getValue(); if(value>max) { list.remove(max); list.add(key); max = value; }else if(value==max) { list.add(key); } } } /** * <p>功能描述:把不重复的数字初始化到Map中</p> * @param intArray * @return * @author:jack * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述] */ private Map<Integer, Integer> init(int[] intArray) { Map<Integer, Integer> map = new HashMap<Integer, Integer>(); HashSet<Integer> set = new HashSet<Integer>(); for(int i : intArray) set.add(i); for(int i : set) map.put(i, 0); return map; } public static void main(String[] args) { MaxAppear maxAppear = new MaxAppear(); int[] intArray = new int[]{3, 2, 5, 2, 3, 4, 2, 3 }; List<Integer> list = maxAppear.go(intArray); System.out.println("出现频率最高的是:"); for(int i : list) { System.out.print(i+" "); } }}