【问题标题】:How to find the most frequent digit in array and print it [closed]如何在数组中找到最常见的数字并打印它[关闭]
【发布时间】:2013-11-13 07:50:53
【问题描述】:

我有这个数组,例如:

|4758322| 10000 | 5748883 |2754331|

我需要返回数组中出现频率最高的数字。 在本例中,该方法将返回 10000。 有人可以帮助我吗?我被卡住了,不知道如何开始。

谢谢!

【问题讨论】:

  • 您想向我们展示一些您尝试过的代码吗?
  • 我不明白,您能否提供更多示例并解释一下?您的示例中有 0 到 3 或 8 个。
  • 是的,如果您查看示例,您可以看到数字 0 在数组中出现频率最高,并且该数字在数字 10000 内,因此程序返回数字 10000。跨度>

标签: java arrays digit


【解决方案1】:

由于您没有提供代码。所以我也不打算写了。
尝试执行以下操作:

对于数组中的每个数字,取模 10,直到值为零。 你将有一个 int。所以计算每个数字出现的次数 在号码中。存储最高计数。重复该过程 其他号码。并比较每个的计数。最后显示 计数最高的数字

【讨论】:

    【解决方案2】:

    我会首先尝试解决问题的简单版本,然后尝试扩展它以解决整个问题。

    我会首先尝试从一个整数中获取数字的频率,这几乎可以解决您的其余问题,例如

    public static int maxFrequency(int number){
        int[] array = new int[(number)+"".length()];
        int max = 0;
        while(number != 0){
            array[number%10] += 1
            if(max < array[number%10]){
                max = array[number%10];
            }
            number = number/10;
        }
        return max;
    }
    

    然后我会使用这个方法将它扩展到数组中的所有元素并选择最大的。

    int[] a = {4758322, 10000 , 5748883 ,2754331};
        int max = 0;
        int target = 0;
    
        for(int i : a){
    
            int maxFrequencyi = maxFrequency(i);
            if(max < maxFrequencyi){
                max = maxFrequencyi;
                target = i;
            }
        }
      return target;
    

    【讨论】:

    • 谢谢!你帮了我很多!
    • 看起来你是新人,下次尝试使用它并使用谷歌搜索想法,然后如果您仍然无法解决问题,则将您的代码 sn-p 发布在问题中,即会告诉人们您已尝试解决问题并帮助人们更好地理解问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    相关资源
    最近更新 更多