計(jì)算出現(xiàn)次數(shù)最多的元素值
問題描述:編寫一個(gè)程序,讀入一組整數(shù),這組整數(shù)是按照從小到大的順序排列的,它們的個(gè)數(shù)N也是由用戶輸入的,最多不會(huì)超過20。然后程序?qū)@個(gè)數(shù)組進(jìn)行統(tǒng)計(jì),把出現(xiàn)次數(shù)最多的那個(gè)數(shù)組元素值打印出來。如果有兩個(gè)元素值出現(xiàn)的次數(shù)相同,即并列第一,那么只打印比較小的那個(gè)值。
輸入格式:第一行是一個(gè)整數(shù)N,N? £? 20;接下來有N行,每一行表示一個(gè)整數(shù),并且按照從小到大的順序排列。
輸出格式:輸出只有一行,即出現(xiàn)次數(shù)最多的那個(gè)元素值。
輸入輸出樣例
樣例輸入
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];//考慮到輸入的整數(shù)的數(shù)據(jù)溢出問題,用的是String?存所輸入的內(nèi)容
int?max_count=1;//先假定輸入的次數(shù)最多的為1次,一個(gè)數(shù)至少出現(xiàn)了1次
int?count=1;//一個(gè)數(shù)最少出現(xiàn)一次
int?n=sc.nextInt();//讀取數(shù)據(jù)的個(gè)數(shù)
int?t=0;
for(int?s=0;s<n;s++)
{
int?i=0;
k[t++]=sc.next();//將數(shù)據(jù)存入數(shù)組
for(i=0;k[t-1].charAt(i)=='0';i++);//?預(yù)防?010和10數(shù)值相同的類似情況,對存儲(chǔ)的進(jìn)行修正
k[t-1]=k[t-1].substring(i);
}
k[t]="null";//這一個(gè)是沒有意義的因?yàn)榇鎯?chǔ)到范圍是0~n-1
String?max_time_num=k[0];//假定出現(xiàn)次數(shù)最多的字符串是0
for(int?d=0;dmax_count)//不想等就判斷是否大于當(dāng)前最大值
{
max_count=count;//大于就把出現(xiàn)的次數(shù)的最大值給max_count
max_time_num=k[d];//用k[d]給max_time_num賦值
}
count=1;//無論是否滿足情況count都要賦值為1
}
}
if(n>0)//少了這個(gè)只能得到80分,
System.out.println(max_time_num);//輸出最終的結(jié)果
}
}
下面這些都是得到80分的,不知道是數(shù)據(jù)溢出了,還是沒有對N<=0進(jìn)行判斷。我也不嘗試了!
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);
}
} 




