21xrx.com
2024-11-25 03:12:13 Monday
登录
文章检索 我的文章 写文章
C++求解数组中出现次数最多的数
2023-07-07 11:59:33 深夜i     --     --
C++ 求解 数组 出现次数 最多的数

在日常的编程中,经常需要处理一些数组,而处理数组中出现次数最多的数也是常见的问题之一。本文将介绍使用C++语言来求解这个问题的方法。

首先,我们需要定义一个函数来计算数组中某个数的出现次数。这个函数接受两个参数,一个是数组,一个是待统计的数。函数会遍历整个数组,用一个计数器来记录该数的出现次数,最终返回计数器的值。


int countOccurrences(int arr[], int size, int target){

  int count = 0;

  for (int i = 0; i < size; i++){

    if (arr[i] == target){

      count++;

    }

  }

  return count;

}

接下来,我们需要遍历整个数组,对每个数调用上面的函数来统计出现次数,最终找到出现次数最多的数。为了方便起见,我们在遍历数组时使用一个哈希表来记录每个数出现的次数。


#include <unordered_map>

int findMostFrequent(int arr[], int size){

  std::unordered_map<int, int> frequency;

  int mostFrequent = arr[0];

  int maxCount = 0;

  for (int i = 0; i < size; i++){

    int count = ++frequency[arr[i]];

    if (count > maxCount){

      maxCount = count;

      mostFrequent = arr[i];

    }

  }

  return mostFrequent;

}

代码中,我们首先定义了一个哈希表,用来记录每个数出现的次数。然后定义了两个变量mostFrequent和maxCount,分别用来记录出现次数最多的数和它出现的次数。在遍历数组时,我们用哈希表来统计每个数的出现次数,如果某个数的出现次数大于maxCount,就更新mostFrequent和maxCount的值。

最后,我们可以在主函数中调用findMostFrequent函数来测试它的效果。


#include <iostream>

int main(){

  int arr[] = 2;

  int size = sizeof(arr) / sizeof(arr[0]);

  int mostFrequent = findMostFrequent(arr, size);

  int frequency = countOccurrences(arr, size, mostFrequent);

  std::cout << "The most frequent number is: " << mostFrequent << std::endl;

  std::cout << "It appears " << frequency << " times." << std::endl;

  return 0;

}

以上代码会输出结果:


The most frequent number is: 1

It appears 4 times.

说明数组中1这个数字出现了4次,是出现次数最多的数。

以上就是使用C++语言来求解数组中出现次数最多的数的方法。我们可以利用哈希表快速统计每个数字的出现次数,然后遍历一次哈希表,找到出现次数最多的数即可。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复