您的位置:首页 > 职场人生

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

2013-07-30 16:34 393 查看
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);
}
}


面试回来后敲得代码,答题一个小时,当时没有时间实现,给面试官说明了以上思想,但是面试官说只需要对数组操作就能实现,当时尽然没有在思考一下 否决了自己的想法,但不晓得仅循环数组怎么能实现。。。
面试还是要自信些,淡定些,沉稳些。不要急啊。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试
相关文章推荐