给定一个整数数组,其中元素的取值范围为0到10000,求其中出现次数最多的数...

本文提供了两种使用Java解决寻找整数数组中最常出现数值的方法。第一种方法通过双重遍历数组来统计每个元素的出现次数,并找出最高频率的元素;第二种方法则利用了数组作为计数器,直接映射数值到其出现次数上,从而更高效地找到出现次数最多的数值。

我的菜菜解法:

//给定一个整数数组,其中元素的取值范围为0到10000,求其中出现次数最多的数

public class Count{

public static void main(String args[]){
int array[] = {1,23,1,222,3,1,2,2,22,355,121,23,23,23,23,23,22,22,22,3,4};
long start = System.nanoTime();
int arr[] = new int[array.length];
/*数组默认值为零
for(int i = 0; i<arr.length;i++){
arr[i] = 0;
}*/
for(int i = 0; i<array.length;i++){
for(int j = i+1;j<array.length; j++){
if(array[i] == array[j]){
arr[j]++;
}
}
}
System.out.println("计数数组:");
for(int i = 0;i<arr.length;i++){
System.out.print(arr[i] + " ," );
}
int max = arr[0];
int index = 0;
for(int i =1; i<arr.length; i++){
if(arr[i]>=max){
max = arr[i];
index = i;
}
}
System.out.println();
System.out.println("出现最多的数:" + array[index]);
long end = System.nanoTime();
System.out.println("耗时:" + (end-start) +"ns");
}
}

牛逼解法:


public class Count2 {
public static void main(String[] args) {
int[] count = new int[10001];
int array[] = {1,23,1,222,3,1,2,2,22,355,121,23,23,23,23,23,22,22,22,3,4};

long start = System.nanoTime();
/* for(int num : array){
count[num]++;
}
*/
for(int num=0;num<array.length;num++){
count[array[num]]++;
}

int max = -1;
int loc = -1;
for (int i = 0;i<count.length;i++) {
if (max < count[i]) {
loc = i;
System.out.println(i);
max = count[i];
}
}
System.out.println(loc);
long end = System.nanoTime();
System.out.println(end-start);
for(int n:count){
System.out.print("."+count[n]);
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值