21xrx.com
2024-11-22 07:13:04 Friday
登录
文章检索 我的文章 写文章
C++中求众数的算法
2023-07-10 01:40:21 深夜i     --     --
C++ 求众数 算法

众数是一组数字中出现次数最多的数,也是常见的统计学方法之一。在C++中,求众数可以通过循环遍历数组实现。

以下是一种基本的求众数算法:


int majorityElement(vector<int>& nums) {

  int n = nums.size();

  // 记录当前的众数和出现次数

  int candidate = nums[0];

  int count = 1;

  // 循环遍历数组

  for (int i = 1; i < n; i++) {

    if (nums[i] == candidate) {

      // 如果当前数和候选众数相同则出现次数加一

      count++;

    } else {

      // 否则出现次数减一

      count--;

      if (count == 0) {

        // 如果出现次数为0则更换候选众数

        candidate = nums[i];

        count = 1;

      }

    }

  }

  // 最后的候选众数就是结果

  return candidate;

}

在上述算法中,我们首先选取第一个数作为候选众数,遍历数组,如果当前数与候选众数相同,则出现次数加一;否则出现次数减一,并判断是否需要更换候选众数。

该算法的时间复杂度为O(n),空间复杂度为O(1)。

除此之外,还有一些其他的求众数算法,例如使用哈希表、排序等方法。选择哪种算法取决于具体的问题和数据规模。

  
  

评论区

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