gpt4 book ai didi

java - 从数组中获取最多的 "popular"数

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:49:58 24 4
gpt4 key购买 nike

我需要作业来获取数组中最“流行”的数字(出现频率最高的数字),如果有多个数字具有相同的显示次数,则随机获取一些数字。经过三个多小时的尝试,或者在网上搜索,这就是我得到的:

public int getPopularNumber(){
int count = 1, tempCount;
int popular = array[0];
int temp = 0;
for ( int i = 0; i < (array.length - 1); i++ ){
if ( _buses[i] != null )
temp = array[i];
tempCount = 0;
for ( int j = 1; j < _buses.length; j++ ){
if ( array[j] != null && temp == array[j] )
tempCount++;
}
if ( tempCount > count ){
popular = temp;
count = tempCount;
}
}
return popular;
}

此代码有效,但不考虑重要情况 - 如果有多个号码具有相同的演出次数。然后它就得到第一个。例如:int[]a = {1, 2, 3, 4, 4, ,5 ,4 ,5 ,5}; 该代码将抓取 4,因为它首先显示,而且它不是随机的应该如此。另一件事——因为这是家庭作业,我不能使用 ArrayList/maps 和我们还没有学过的东西。任何帮助将不胜感激。

最佳答案

因为他们没有给你任何时间复杂度边界,你可以通过扫描数组 N^2 次来“暴力破解”这个问题。 (免责声明,这是最直观的方法,在内存和 CPU 方面不是最快或最有效的)。

这是一些伪代码:

  1. 创建另一个与原始数组大小相同的数组,这将是“出现数组”
  2. 将其元素归零
  3. 对于原始数组中的每个索引i,迭代原始数组,并在每次扫描找到重复值时递增i出现数组中的元素存储在原数组的i中。
  4. 找出出现数组中的最大值
  5. 返回原数组中该索引存储的值

这样您就可以通过另一个数组模拟 map 的使用。

关于java - 从数组中获取最多的 "popular"数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34043608/

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