计算出现次数最多的元素值
时间:2018-11-22 11:24:02
[导读]问题描述:编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两
问题描述:编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数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);
}
} 




