计算出现次数最多的元素值
扫描二维码
随时随地手机看文章
问题描述:编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。
输入格式:第一行是一个整数N,N £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。
输出格式:输出只有一行,即出现次数最多的那个元素值。
输入输出样例
样例输入
5
100
150
150
200
250
样例输出
150
import java.util.*; import java.math.*; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); String k[]=new String[25];//考虑到输入的整数的数据溢出问题,用的是String 存所输入的内容 int max_count=1;//先假定输入的次数最多的为1次,一个数至少出现了1次 int count=1;//一个数最少出现一次 int n=sc.nextInt();//读取数据的个数 int t=0; for(int s=0;s<n;s++) { int i=0; k[t++]=sc.next();//将数据存入数组 for(i=0;k[t-1].charAt(i)=='0';i++);// 预防 010和10数值相同的类似情况,对存储的进行修正 k[t-1]=k[t-1].substring(i); } k[t]="null";//这一个是没有意义的因为存储到范围是0~n-1 String max_time_num=k[0];//假定出现次数最多的字符串是0 for(int d=0;dmax_count)//不想等就判断是否大于当前最大值 { max_count=count;//大于就把出现的次数的最大值给max_count max_time_num=k[d];//用k[d]给max_time_num赋值 } count=1;//无论是否满足情况count都要赋值为1 } } if(n>0)//少了这个只能得到80分, System.out.println(max_time_num);//输出最终的结果 } }
下面这些都是得到80分的,不知道是数据溢出了,还是没有对N<=0进行判断。我也不尝试了!
import java.util.*; import java.math.*; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int k[]=new int[22]; int max_count=1; int max_time_num=0; int count=0; int n=sc.nextInt(); int t=0; while(n-->0) { k[t++]=sc.nextInt(); } if(t>1) { for(int s=t;s>=1;s--) { if(k[s]==k[s-1]) { count++; } else { count=1; } if(count>=max_count) { max_count=count; max_time_num=k[s]; } } if(k[0]!=k[1]&&k[1]!=k[2]&&max_time_num==k[1]) { max_time_num=k[0]; } System.out.println(max_time_num); } else { System.out.println(k[0]); } } } import java.util.*; import java.math.*; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int k[]=new int[22]; int max_count=1; int max_time_num=0; int n=sc.nextInt(); int t=0; while(n-->0) { k[t++]=sc.nextInt(); } max_time_num=k[0]; for(int i=0;i<t;) { int count=0; int d=0; for(d=0;(k[i]==k[i+d])&&(i+dmax_count) { max_count=count; max_time_num=k[i]; } i=i+d; } System.out.println(max_time_num); } } import java.util.*; import java.math.*; public class Main { public static void main(String[] args) { int k[]=new int[10000000]; int max_time,max_num=0; Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int k2[]=new int[n]; for(int i=0;i<n;i++) { k2[i]=sc.nextInt(); k[k2[i]]++; } max_num=k2[0]; max_time=k[k2[0]]; for(int i=0;i<n;i++) { if(max_time<k[k2[i]]) { max_num=k2[i]; } } System.out.println(max_num); } }