问题是:
编写一个称为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表的给定列中找到最频繁的值? 例如,对于该表,它应该返回,因为它是最频繁的值: 问题答案: 替换和。如果要查看列的最常用值,请增加。