計(jì)算出現(xiàn)次數(shù)最多的元素值
問題描述:編寫一個(gè)程序,讀入一組整數(shù),這組整數(shù)是按照從小到大的順序排列的,它們的個(gè)數(shù)N也是由用戶輸入的,最多不會超過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ù)值相同的類似情況,對存儲的進(jìn)行修正 k[t-1]=k[t-1].substring(i); } k[t]="null";//這一個(gè)是沒有意義的因?yàn)榇鎯Φ椒秶?~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); } }