当前位置: 代码迷 >> J2SE >> 某公司java笔试题 看看你能不能做上来!该怎么解决
  详细解决方案

某公司java笔试题 看看你能不能做上来!该怎么解决

热度:177   发布时间:2016-04-24 01:31:10.0
某公司java笔试题 看看你能不能做上来!
一组数字 挑选出出现频率最高的

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+"    ");        }    }}
  相关解决方案