当前位置: 代码迷 >> J2SE >> 面试题: 给你一组字符比如{1,3,4,7,2,1,1,5,2},让你输出里面出现次数最多且数值最大的一个,并算出出现几次
  详细解决方案

面试题: 给你一组字符比如{1,3,4,7,2,1,1,5,2},让你输出里面出现次数最多且数值最大的一个,并算出出现几次

热度:89   发布时间:2016-04-24 00:42:40.0
面试题: 给你一组字符例如{1,3,4,7,2,1,1,5,2},让你输出里面出现次数最多且数值最大的一个,并算出出现几次
我当时做出来了 可是面试官说我的程序太复杂算法不好 大侠们 帮帮小弟 看能不能写出好一点的

------解决方案--------------------
Java code
package regulartest;import java.util.*;import java.util.Map.Entry;public class Test {    public static void main(String[] args){        int[] num = {5,5,8,5,3,5,3,3,3,1,1,1};        Map<Integer, Integer> map = new HashMap<Integer, Integer>();        for( int i =0 ; i<num.length ;i++){            if(map.containsKey(num[i])){                map.put(num[i], (Integer)map.get(num[i])+1);//如果已经有key--num[1],那么这个put,就会把value值+1覆盖原来的value值            }else{                map.put(num[i], 1);            }                    }        Integer max= Integer.MIN_VALUE;        Integer max2 = Integer.MIN_VALUE;        for( Entry<Integer, Integer> entry : map.entrySet() ) {            Integer key = entry.getKey();            Integer value = entry.getValue();                        if(value>=max){                                max=value;                if(key>=max2){                      max2=key;                }            }                        }                for( Entry<Integer, Integer> entry : map.entrySet() ) {            Integer key = entry.getKey();            Integer value = entry.getValue();                        if(key==max2){                System.out.println("频率最大数"+key+" 频率:"+max);            }                        }    }}
  相关解决方案