出现次数最多的数

问题描述
  给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。
输入格式
  输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。
  输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。
输出格式
  输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。
样例输入
6
10 1 10 20 30 20
样例输出
10
 
我的代码:
public class test01 {
 public static void main(String []args){
  System.out.println("样例输入");
  Scanner sc = new Scanner(System.in);
  int num = sc.nextInt();
  int n[]=new int[num];
  for(int i=0;i<num;i++){
   n[i]=sc.nextInt();
  }
  sc.close();
  int temp=0,count,countmax=0;
  for(int i=0;i<num;i++){
   count = 0;
   for(int j=i;j<num;j++){
    if(n[i]==n[j]){
     count++;
    }
   }
   if(count>countmax){
    countmax = count;
    temp = n[i];
   }else if(count == countmax){
    if(temp > n[i]){
     temp = n[i];
    }
   }
   
  }
  System.out.println("样例输出");
  System.out.println(temp);
 }
 
}

  

 
参考答案代码:(更简洁)
import java.util.*;
public class Main {
public static void main(String[] args) {
  new Main().run();
}
public void run() {
  Scanner fin = new Scanner(System.in);
  int N = fin.nextInt();
  int[] count = new int[10001];
  for (int i = 0; i < N; ++i) {
   ++count[fin.nextInt()];
  }
  int maxCount = -1;
  int result = 0;
  for (int i = 1; i <= 10000; ++i) {
  if (count[i] > maxCount) {
   maxCount = count[i];
   result = i;
  }
  }
   System.out.println(result);
  }
}

  

posted @ 2018-07-03 17:41  Clerver  阅读(349)  评论(0)    收藏  举报