我当时做出来了 可是面试官说我的程序太复杂算法不好  大侠们 帮帮小弟 看能不能写出好一点的

解决方案 »

  1.   

    我也问过这道题 是8月中的时候
    ---------
    用map<the number, 次数>
      

  2.   


    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);
                }
                    
            } }
    }
      

  3.   

    为什么要用map?呵呵,先排序再取最大值不就得了,用不着那么复杂public static void main(String[] args)
        {  
            int[] ch = {1,3,4,7,2,1,7,1,5,2,7};
            Arrays.sort(ch);
            int max = ch[ch.length - 1];
            int count = 1;
            for(int i = ch.length - 2;i >= 0; i--){
             if(ch[i] == max){
             count++;
             }
             else{
             break;
             }
            }
            System.out.println("最大值:" + max);
            System.out.println("最大值个数:" + count);
        }
      

  4.   

    楼上,使用排序的算法复杂度和map可不能比啊
      

  5.   

    我的算法是排序后 HASHMAP不知道有没有更好的
      

  6.   

    帅哥,你自己看看哪个复杂,map只是在容器类里存取速度比较快而已,面试的时候你写那么一堆东西考官会晕死~
    Arrays.sort()对原型数组采用的是经过优化过的快速排序算法,平均时间复杂度为n*logn,效率还是比较高的.
    你可以用工具测下我写的跟你写的哪个更快点撒,呵呵
    空间复杂度来说,你写的那个MAP的占用空间也太多,MAP对象都是放在堆上的;我写的那个东东(不敢说好哈,呵呵),使用的都是基本类型(数组是条件不算),都是放在栈中的,存取速度也会比堆中的快一些~顺便再提下,LZ说的"让你输出里面出现次数最多中的某一字符数值最大的一个"还没大懂,就你的例子来说你是想输出的出现次数最多中的某一字符数值最大的一个是1?