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

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

题目描述

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

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

示例 1:

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

输出:3

示例 2:

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

输出:2

解题方法分析:

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

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

代码:

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        // 使用map来记录每个数字的出现次数
        std::map<int, int> counts;
        // majority用于记录当前的多数元素,cnt用于记录多数元素出现的次数
        int majority = 0, cnt = 0;
        // 遍历输入数组
        for (int num : nums) {
            // 将当前数字的出现次数加一
            ++counts[num];
            // 如果当前数字的出现次数超过之前记录的多数元素的次数
            if (counts[num] > cnt) {
                // 更新多数元素和出现次数
                majority = num;
                cnt = counts[num];
            }
        }
 
        // 返回最终找到的多数元素
        return majority;
    }
};


相关文章
|
6月前
|
算法
27. 移除元素 Leetcode经典面试题
27. 移除元素 Leetcode经典面试题
38 1
|
6月前
|
NoSQL Redis 数据库
面试02-Redis 中的过期元素是如何被处理的?
面试02-Redis 中的过期元素是如何被处理的?
71 0
|
3月前
|
Python
【面试题解答】一个有序数组 nums ,原地删除重复出现的元素
【面试题解答】一个有序数组 nums ,原地删除重复出现的元素
31 0
|
6月前
|
SQL 分布式计算 算法
2024年最新【Python】列表元素的 删除 操作(remove()、pop()、切片,2024年最新Python社招面试题
2024年最新【Python】列表元素的 删除 操作(remove()、pop()、切片,2024年最新Python社招面试题
2024年最新【Python】列表元素的 删除 操作(remove()、pop()、切片,2024年最新Python社招面试题
|
5月前
|
存储 SQL 算法
LeetCode 83题:删除排序链表中的重复元素【面试】
LeetCode 83题:删除排序链表中的重复元素【面试】
|
6月前
|
前端开发 容器
CSS面试考点:隐藏元素、BFC、垂直居中、CSS3新特性
【4月更文挑战第2天】 CSS面试考点:隐藏元素、BFC、垂直居中、CSS3新特性
53 10
【力扣经典面试题】27. 移除元素
【力扣经典面试题】27. 移除元素
|
算法
LeetCode150道面试经典题-移除元素(简单)
给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度
59 0
|
6月前
|
存储 算法 Java
数据结构和算法面试题:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
数据结构和算法面试题:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
88 0
|
6月前
|
Java C++
面试题 17.10. 主要元素(C++)
面试题 17.10. 主要元素(C++)
32 0