随机正整数序列 取出最大重复次数的数字问题
由键盘输入一串正整数 例如:3 2 1 4 5 4 5 3 3
首先进行排序,可排序为1 2 3 3 3 4 4 5 5
3的重复次数为3次 4 5 的重复次数为2次
则输出应该 为 3 3 3 若最大重复次数有若干个数字相同 则分别输出
要求JAVA去实现
提示:声明数组可以用表达式 输入数字的个数可以在表达式中出现
------解决方案--------------------up
------解决方案--------------------你让大家帮你做作业呢???
------解决方案--------------------比较笨的办法是先对数组排序,在依次查看每个数字的个数
------解决方案--------------------插入数据库 分组统计一下就可以了 group by
------解决方案--------------------楼上的好主意
------解决方案--------------------package net.oicp.sunflowerbbs;
public class Hash {
public static void hashCount(int [] a)
{
int max=a[0];
for(int i=1;i <a.length;i++)
max=max <a[i]?a[i]:max;
int hashTable[]=new int[max+1];
for(int i=0;i <a.length;i++)
hashTable[a[i]%(max+1)]=hashTable[a[i]%(max+1)]+1;
int countMax=hashTable[0];
for(int i=0;i <hashTable.length;i++)
countMax=countMax <hashTable[i]?hashTable[i]:countMax;
for(int i=0;i <hashTable.length;i++)
{
if(hashTable[i]==countMax)
{
for(int j=0;j <countMax;j++)
System.out.print(i+(j!=countMax-1? ", ": " "));
System.out.println();
}
}
}
public static void main(String[] args) {
int b[]={1,20,80,20,80,1,30,30,30};
hashCount(b);
}
}
------解决方案--------------------排序简单,输出重复最多的次数没搞定,帮顶
package test1;
import java.io.BufferedReader;
import
java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Test2 {
/**
* @param args
* @throws
IOException *
*/
public static void main(String[] args) throws IOException {
// TODO 自动生成方法存根
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String st;
while((st=br.readLine())!=null){
System.out.println(st);
break;
}
int test[]=new int[st.length()];
for(int i=0;i <st.trim().length();i++){
test[i]=Integer.parseInt(st.substring(i, i+1));
}
for(int i=0;i <test.length;i++){
System.out.print(test[i]);
}
System.out.println();
Arrays.sort(test);
}
}
------解决方案-------------------- String str = "3 2 1 4 5 4 5 3 3 4 5 4 ";
String[] arr = str.split( "\\s+ ");
int[] p = new int[arr.length];
for(int i=0;i <p.length;i++)p[i]=new Integer(arr[i]).intValue();
for(int i=0;i <p.length;i++){
for(int j=i+1;j <p.length;j++){
if(p[i]> p[j]){
int mid = p[i];
p[i] = p[j];
p[j] = mid;
}
}
}
for(int i=0;i <p.length;i++)System.out.print(p[i]+ " ");
System.out.println();
String ret = " ";
int cnt = 0;//当前数字最多位
for(int i=0,j=1;i <p.length-1;i++,j++){