瑞恩面试编程题:找出数组中出现次数最多且最大的那个数及出现的次数

package jp.co.sanx.pos.event;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
public class test {
    /**
     * @param args
     */
    public static void main(String[] args) {
        int[] a = {9, 1, 6, 3, 3, 1, 2, 2,2,1, 8};
        int coutMax;
        //key按照升序存储
        Map<String,String> map =new TreeMap<String, String> ();
        //map的设定:key,数组中出现过得key;value,出现的次数
        for (int i = 0; i < a.length;i++) {
            if (map.containsKey(Integer.toString(a[i]))) {
                continue;
            }else {
                coutMax=1;
                for (int j=i +1;j<a.length;j++) {
                    if (a[j]==a[i]){
                        coutMax++;
                    }
                }
                map.put(Integer.toString(a[i]), Integer.toString(coutMax));
            }
                                                
        }
        //取得value最大且为最后一个的键值对
        Iterator<Entry<String, String>> i = map.entrySet().iterator();
        Entry<String, String>  etry,etryTmp;
        int time = 0,timeTmp = 0;
        int key = 0,keyTmp;
                                            
        if(i.hasNext()) {
             etry = (Entry<String, String>) i.next();
             key = Integer.parseInt((String) etry.getKey());
             time = Integer.parseInt((String) etry.getValue());
                                               
        }
        while(i.hasNext()) {
             etryTmp = (Entry<String, String>) i.next();
             keyTmp = Integer.parseInt((String) etryTmp.getKey());
             timeTmp = Integer.parseInt((String) etryTmp.getValue());
             if(timeTmp >= time) {
                 time = timeTmp;
                 key = keyTmp;
             }
        }
        System.out.println( "数组中出现次数最多且最大值为:" + key + " ,出现次数:" + time);
    }
}


面试回来后敲得代码,答题一个小时,当时没有时间实现,给面试官说明了以上思想,但是面试官说只需要对数组操作就能实现,当时尽然没有在思考一下 否决了自己的想法,但不晓得仅循环数组怎么能实现。。。

面试还是要自信些,淡定些,沉稳些。不要急啊。





你可能感兴趣的:(面试)