题目描述
编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印较小的那个值。例如,假设用户输入的是“100 150 150 200 250”,则输出为150。
输入:
6
100 150 150 200 200 250
输出:
150
需要注意的是,要设两个数用来表示重复的个数。来进行比较
代码
import java.util.*;
public class P0502 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for(int i=0;i<n;i++) {
a[i] = sc.nextInt();
}
int sum = 1; //用来表示有几个相同数
int temp = a[0]; //他表示最后的结果。如果只有一个数或者两个数,或者所有的数都不相同,
//那么输出第一个数就行,所以让他等于第一个数
int max = 1; //用来盘算是否有重复的数,并且与之前的重复数相比较,
//如果重复数大于他了,就要让结果变成重复数多的数
for(int i=0;i<n-1;i++) {
if(a[i]==a[i+1]) {
sum++;
}
else {
sum=1; //如果两个数不相等了,那么令计数等于1,重新计算重复数
}
if(sum>max) { //如果第二个重复的个数大于之前的重复数了
max = sum; //就令max等于sum,暂时计数,如果之后重复的数大于max了,那么就令max等于sum
temp = a[i]; //要输出的数。
}
}
System.out.print(temp);
}
}