gpt4 book ai didi

java - 在包含 1000 个元素的整数数组中查找多种众数

转载 作者:行者123 更新时间:2023-12-02 06:19:17 25 4
gpt4 key购买 nike

所以我需要一种方法来查找 1000 个元素的数组中的模式,每个元素使用 math.Random() 从 0-300 随机生成。

int[] nums = new int[1000];

for(int counter = 0; counter < nums.length; counter++)
nums[counter] = (int)(Math.random()*300);

int maxKey = 0;
int maxCounts = 0;

sortData(array);
int[] counts = new int[301];

for (int i = 0; i < array.length; i++)
{
counts[array[i]]++;
if (maxCounts < counts[array[i]])
{
maxCounts = counts[array[i]];
maxKey = array[i];
}
}

这是我当前的方法,它给了我出现次数最多的数字,但如果结果表明其他事情发生了相同的次数,它只输出一个数字并忽略其余的数字。

我们不允许使用数组列表或 HashMap (老师禁止这样做)

请帮助我了解如何修改此代码以生成包含随机数组中所有模式的数组输出。

谢谢大家!

编辑:

谢谢你们,我明白了:

private static String calcMode(int[] array)
{
int[] counts = new int[array.length];
for (int i = 0; i < array.length; i++) {
counts[array[i]]++;
}
int max = counts[0];
for (int counter = 1; counter < counts.length; counter++) {
if (counts[counter] > max) {
max = counts[counter];
}
}

int[] modes = new int[array.length];

int j = 0;
for (int i = 0; i < counts.length; i++) {
if (counts[i] == max)
modes[j++] = array[i];
}

toString(modes);
return "";
}

public static void toString(int[] array)
{
System.out.print("{");
for(int element: array)
{
if(element > 0)
System.out.print(element + " ");
}
System.out.print("}");
}

最佳答案

看看这个,没有经过全面测试。但我认为它实现了 @ajb 所说的:

private static int[] computeModes(int[] array)
{
int[] counts = new int[array.length];
for (int i = 0; i < array.length; i++) {
counts[array[i]]++;
}
int max = counts[0];
for (int counter = 1; counter < counts.length; counter++) {
if (counts[counter] > max) {
max = counts[counter];
}
}

int[] modes = new int[array.length];

int j = 0;
for (int i = 0; i < counts.length; i++) {
if (counts[i] == max)
modes[j++] = array[i];
}

return modes;
}

这将返回一个带有模式的数组int[]。它将包含许多 0,因为结果数组 (modes[]) 必须使用传递的数组的相同长度进行初始化。因为每个元素都有可能只出现一次。

main 方法中调用它时:

public static void main(String args[])
{
int[] nums = new int[300];

for (int counter = 0; counter < nums.length; counter++)
nums[counter] = (int) (Math.random() * 300);

int[] modes = computeModes(nums);
for (int i : modes)
if (i != 0) // Discard 0's
System.out.println(i);
}

关于java - 在包含 1000 个元素的整数数组中查找多种众数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21151844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com