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); } }
面试回来后敲得代码,答题一个小时,当时没有时间实现,给面试官说明了以上思想,但是面试官说只需要对数组操作就能实现,当时尽然没有在思考一下 否决了自己的想法,但不晓得仅循环数组怎么能实现。。。
面试还是要自信些,淡定些,沉稳些。不要急啊。