問題描述:編寫一個程序,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數N也是由用戶輸入的,最多不會超過20。然后程序將對這個數組進行統(tǒng)計,把出現次數最多的那個數組元素值打印出來。如果有兩個元素值出現的次數相同,即并列第一,那么只打印比較小的那個值。
輸入格式:第一行是一個整數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); } }