当前位置:  开发笔记 > 编程语言 > 正文

从数组中获取最"流行"的数字

如何解决《从数组中获取最"流行"的数字》经验,为你挑选了1个好方法。

我需要做作业才能获得阵列中最"流行"的数字(最高频率的数字),如果有多个数字具有相同数量的节目,请随机获取一些数字.经过三个多小时的尝试,并在网上搜索,这就是我得到的:

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和我们仍然没有学习的东西.任何帮助,将不胜感激.



1> David Haim..:

由于它们没有给你任何时间复杂性边界,你可以通过扫描阵列N ^ 2次来"暴力破解"问题.(免责声明,这是最直观的方式,在内存和CPU方面不是最快或最有效的).

这是一些伪代码:

    创建另一个与原始数组大小相同的数组,这将是"出现数组"

    归零其元素

    对于i原始数组中的每个索引,迭代原始数组,并在i每次扫描找到存储在i原始数组中的值的重复时递增出现数组中的元素.

    在发生数组中找到最大值

    返回原始数组中该索引中存储的值

这样您就可以模仿仅使用另一个数组的地图.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有