CCF系列之出现次数最多的数(201312-1)
试题名称: 出现次数最多的数
时间限制: 1.0s
内存限制: 256.0MB
问题描述: 问题描述
给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。
输入格式
输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。
输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。
输出格式
输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。
样例输入
6
10 1 10 20 30 20
样例输出
10
解题思路:
代码如下(java):
1 package ccf_text2013_12; 2 3 import java.util.Scanner; 4 /** 5 * 给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。 6 * @author Hello stranger 7 * 8 */ 9 public class MaxTimeNumber { 10 11 public static void main(String[] args) { 12 13 new MaxTimeNumber().run(); 14 15 } 16 17 private void run() { 18 19 Scanner fin = new Scanner(System.in); 20 21 int N = fin.nextInt(); 22 23 int[] count = new int[10001]; 24 25 for(int i = 0; i < N; i++){ 26 27 ++count[fin.nextInt()]; 28 29 } 30 31 //long start = System.currentTimeMillis(); //获取当前系统毫秒值 32 33 int maxCount = -1; 34 35 int result = 0; 36 37 for(int i = 1; i <= 10000; ++i){ 38 39 if(count[i] > maxCount){ 40 41 maxCount = count[i]; 42 43 result = i; 44 } 45 } 46 47 System.out.println(result); 48 49 //long end = System.currentTimeMillis(); 50 51 //System.out.println((end - start)/1.0e3 +"s"); 52 } 53 54 }