import java.util.Scanner;
**//问题描述**
// 给定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 One {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int []array1 = new int[n];
int array2[]=new int[n];
//输入一组数据
for(int i=0;i<n;i++)
{
array1[i]=in.nextInt();
array2[i]=0;
}
//将array1数组中出现数的次数记录进array2中
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++ )
{
if(array1[i]==array1[j])
{
array2[i]++;
}
}
}
//找出array2中最大的元素
int max=0;
int temp=0;
for(int i=0;i<n;i++)
{
if(array2[i]>max)
{
max=array2[i];
temp=i;//记录下出出现次数最多的数的下标
}
}
//找出array1数组找出出现次数最多的元素,将其赋值给min
int min = array1[temp];
for(int i=0;i<n;i++)
{
if(array2[i]==max)//判断array2数组中元素存在等于max(max是array2最大的元素)
{
if(array1[i]<array1[temp])//遇见相同次数的元素,选择最小的
{
min=array1[i];
}
}
}
System.out.println(min);
}
}
**思路:**
定义两个数组,第一个数组存放输入进来的数,第二个数组用来存放第一个数组中出现的数的次数。找出array2中最
大的数,也就是array1的元素出现的次数。同时记录下来array2中最大元素的下标。