打赏

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 }

 

posted @ 2016-03-26 17:40  海米傻傻  阅读(682)  评论(0编辑  收藏  举报