日期:2014-05-20  浏览次数:20795 次

随机正整数序列 取出最大重复次数的数字问题
由键盘输入一串正整数     例如: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++){