当前位置:   article > 正文

[经典面试题]169. 多数元素

[经典面试题]169. 多数元素

题目描述

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例 1:

输入:nums = [3,2,3]
输出:3

示例 2:

输入:nums = [2,2,1,1,1,2,2]
输出:2

解题方法分析: 

使用哈希算法(HashMap)来存储每个元素以及出现的次数。通过求解哈希映射中的每个键值对,键表示一个元素,值表示该元素出现的次数,统计出数组出现的数字次数最多的那一过。

首先循环遍历数组 nums 并将数组中的每个元素加入哈希映射中。在这之后,我们遍历哈希映射中的所有键值对,返回值最大的键,这样就可以通过哈希统计出出现次数最多的数字。

代码:

  1. class Solution {
  2. public:
  3. int majorityElement(vector<int>& nums) {
  4. // 使用map来记录每个数字的出现次数
  5. std::map<int, int> counts;
  6. // majority用于记录当前的多数元素,cnt用于记录多数元素出现的次数
  7. int majority = 0, cnt = 0;
  8. // 遍历输入数组
  9. for (int num : nums) {
  10. // 将当前数字的出现次数加一
  11. ++counts[num];
  12. // 如果当前数字的出现次数超过之前记录的多数元素的次数
  13. if (counts[num] > cnt) {
  14. // 更新多数元素和出现次数
  15. majority = num;
  16. cnt = counts[num];
  17. }
  18. }
  19. // 返回最终找到的多数元素
  20. return majority;
  21. }
  22. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/57239
推荐阅读
相关标签
  

闽ICP备14008679号