题目:
给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。
输入:
输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。
输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。
输出:
输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。
输入样例:
6
10 1 10 20 30 20
输出样例:
10
思路:这道题是一道非常简单的题目。
package csp;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class csp201312_1 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.valueOf(br.readLine());
String[] arr = br.readLine().split(" ");
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
List<Integer> keys = new ArrayList<Integer>();
for(int i=0;i<n;i++) {
int key = Integer.valueOf(arr[i]);
if(map.get(key)==null) map.put(key, 0);
else map.put(key, map.get(key)+1);
keys.add(key);
}
Collections.sort(keys);
int index = 0;
for(int i=1;i<keys.size();i++) {
if(map.get(keys.get(index))<map.get(keys.get(i))){
index = i;
}
}
System.out.println(keys.get(index));
}
}