当前位置: 首页 > 面试题库 >

用Java编写模式方法以查找数组中最频繁出现的元素

何向荣
2023-03-14
问题内容

问题是:

编写一个称为mode的方法,该方法返回整数数组中最频繁出现的元素。假定该数组至少包含一个元素,并且数组中的每个元素的值都介于0和100之间(含0和100)。通过选择较低的值来打破平局。

例如,如果传递的数组包含值{27、15、15、11、27},则您的方法应返回15。(提示:您可能希望看一下本章前面的Tally程序,以了解如何解决这个问题呢。)

下面是我的代码,除了单元素数组外,几乎可以使用

public static int mode(int[] n)
{
    Arrays.sort(n);
    
    int count2 = 0;
    int count1 = 0;
    int pupular1 =0;
    int popular2 =0;


    for (int i = 0; i < n.length; i++)
    {
            pupular1 = n[i];
            count1 = 0;    //see edit

        for (int j = i + 1; j < n.length; j++)
        {
            if (pupular1 == n[j]) count1++;
        }

        if (count1 > count2)
        {
                popular2 = pupular1;
                count2 = count1;
        }

        else if(count1 == count2)
        {
            popular2 = Math.min(popular2, pupular1);
        }
    }

    return popular2;
}

编辑 :终于想通了。更改count1 = 0;count1 = 1;现在一切正常!


问题答案:

对于此类问题,应使用哈希图。将每个元素输入到哈希图中需要花费O(n)的时间,而需要花费o(1)来获取该元素。在给定的代码中,我基本上是获取一个全局最大值,并将其与从哈希图中’get’接收到的值进行比较,每次我向其中输入一个元素时,请看一下:

hashmap有两部分,第一部分是键,第二部分是对键执行get操作时返回的值。

public static int mode(int []array)
{
    HashMap<Integer,Integer> hm = new HashMap<Integer,Integer>();
    int max  = 1;
    int temp = 0;

    for(int i = 0; i < array.length; i++) {

        if (hm.get(array[i]) != null) {

            int count = hm.get(array[i]);
            count++;
            hm.put(array[i], count);

            if(count > max) {
                max  = count;
                temp = array[i];
            }
        }

        else 
            hm.put(array[i],1);
    }
    return temp;
}


 类似资料:
  • 本文向大家介绍编写Golang程序以查找数组中元素的频率,包括了编写Golang程序以查找数组中元素的频率的使用技巧和注意事项,需要的朋友参考一下 例子 在输入数组中,arr = [2、4、6、7、8、1、2] 给定数组中2的频率为2 7的频率为1 3的频率为0。 解决这个问题的方法 步骤1:定义一个接受数组和数字的函数 步骤2:声明一个变量count = 0。 步骤3:迭代给定数组,如果在数组中

  • 可能重复: 查找字符串中最长的重复序列 我正在解决一个问题,我需要找到重复最多的模式。 为了简单和方便,请考虑这个字符串: 重复次数最多的序列(例如,最初考虑字符串长度大于3个字符)是“Lorem Ipsum”。“Lorem”和“Ipsum”当然也重复相同的次数,但如果它们重复相同的次数,则较长的字符串优先于较短的字符串。 什么样的算法可以有效地找到这种模式,最好是在Python中?

  • 本文向大家介绍编写Golang程序以查找数组中每个元素的出现次数,包括了编写Golang程序以查找数组中每个元素的出现次数的使用技巧和注意事项,需要的朋友参考一下 例子 输入数组= [1、3、4、3、2、3、4、0、2] 元素 1 3 4 2 0 出现次数 1 3 2 2 1 解决这个问题的方法 步骤1: 定义一个接受数组的方法。 步骤2: 定义一个映射,其中key将是数组的元素,起始值为0。 步

  • 问题内容: 给你一个包含 1 到 n 的整数数组,但数组中从 1 到 n 的数字之一丢失了。您需要提供最佳解决方案来找到丢失的数字。数组中的数字不能重复。 例如: 问题答案: 用 初始化两个变量最大和最小 迭代数组 如果当前元素大于最大值,则将当前元素分配给最大值。 如果当前元素小于最小值,则将当前元素分配给最小值。 最后你会得到最小和最大的元素。 在数组中查找最小和最大元素的 Java 代码:

  • 本文向大家介绍编写Golang程序以查找数组中具有最小值的元素,包括了编写Golang程序以查找数组中具有最小值的元素的使用技巧和注意事项,需要的朋友参考一下 例子 A1 = [2、4、6、7、8、10、3、6、0、1];最小数量为0; A2 = [12、14、16、17、18、110、13、16、10、11];最小数量为10; 解决这个问题的方法 步骤1:将第0个索引处的数字视为最小值,min_

  • 问题内容: 如何在SQL表的给定列中找到最频繁的值? 例如,对于该表,它应该返回,因为它是最频繁的值: 问题答案: 替换和。如果要查看列的最常用值,请增加。