当前位置: 首页 > 知识库问答 >
问题:

在整数数组中查找频率最高的元素(如果可能,请选择最小的元素)及其出现次数

姬雪松
2023-03-14

问题:发现2件事

  • 给定未排序整数数组中出现的最高值
  • 出现率最高的元素,如果有多个元素满足(出现率相同),则结果为最小的元素。

请尽可能简单地解决问题,不要使用指针或任何高级容器,如哈希表、对或映射(我是一个初学者)

{1, 2, 8, 2, 5, 0, 5}

答案是2和2(元素25都出现两次,但2是最小的)

这里是代码,但它只找到最高出现的权利。

int A[] = {1, 2, 8, 2, 5, 0, 5};
int N = 7;
    int maxCount = 0;
    int minMode = 0;
    for (int i = 0; i <= N - 1; i++) {
           int count = 0;
           for (int j = 0; j <= N - 1; j++) {
             if (A[i] == A[j])
                 count++;
       }
      if (count >= maxCount)
        {
            maxCount = count;
            minMode = A[i];
        }

     }
        cout << maxCount << " " << minMode << endl;

共有1个答案

茅曾琪
2023-03-14

这个问题是O(n),但不使用结构,它就变成了O(n²)。

下面是一个简单的O(N²)解决方案:

int main(){    
    int A[7] = {1, 2, 8, 2, 5, 0, 5};
    int value, occurrences;
    int maxValue = 99999999, maxOccurrences = 0;
    for(int i = 0; i < 7; i++){
        value = A[i]; occurrences = 0;
        for(int j = 0; j < 7; j++) if(A[j] == value) occurrences++;
        if(occurrences > maxOccurrences){
            maxValue = value; maxOccurrences = occurrences;
        }
        else if(occurrences == maxOccurrences){
            if(value < maxValue) {
                maxValue = value; 
                maxOccurrences = occurrences; 
            }
        }       
    }
    cout<<maxValue<<" occurs "<<maxOccurrences<<" times"<<endl;
}

我们将maxValue初始化为一个非常大的数字,只是为了帮助实现这样一个事实,即如果两个数字出现的次数相同,将选择最低的一个。

 类似资料:
  • 问题内容: 在Javascript中,我试图获取数字值的初始数组并计算其中的元素。理想情况下,结果将是两个新数组,第一个数组指定每个唯一元素,第二个数组包含每个元素出现的次数。但是,我愿意接受有关输出格式的建议。 例如,如果初始数组为: 然后将创建两个新的数组。第一个将包含每个唯一元素的名称: 第二个将包含元素在初始数组中出现的次数: 因为数字5在初始数组中出现3次,所以数字2出现5次,而9和4都

  • 问题内容: 我正在寻找一种确定JavaScript数组中哪个元素的出现次数最多的优雅方法(mode)。 例如,在 该元素是最常见的元素。 问题答案: 这只是模式。这是一个 快速的,未优化的 解决方案。它应该是O(n)。

  • 我想在“价格”数组中找到最高的元素,然后在“字母”数组中打印相应的元素 我需要一些关于我能做什么的建议。我尝试过输出字母[索引],但由于我认为的范围,我遇到了一个错误。我对编码很陌生,所以这真的困扰着我。

  • 问题内容: 我只需要找到1D中最小的第n个元素。 例如: 我想获得第五个最小的元素,所以我想要的输出是。 我当前的解决方案是这样的: 但是,找到5个最小的元素然后再选择最大的元素对我来说似乎很笨拙。有更好的方法吗?我是否缺少一个可以实现目标的功能? 有些问题的标题与此相似,但我没有看到任何答案。 编辑: 我本来应该提到它,但是性能对我来说很重要。因此,虽然不错的解决方案对我来说不起作用。 结果:

  • 问题 怎样找出一个序列中出现次数最多的元素呢? 解决方案 collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案。 为了演示,先假设你有一个单词列表并且想找出哪个单词出现频率最高。你可以这样做: words = [ 'look', 'into', 'my', 'eyes', 'look', 'into',