机考刷题之 6 LeetCode 169 多数元素

题目

分析

思路一

第一时间想到的是拿一个unordered_map/map来存储每个值对应的频率,然后遍历这个unordered_map/map再得出主要元素。

代码

cpp 复制代码
class Solution {
public:
    int majorityElement(vector<int>& nums) {
        unordered_map<int,int>myMap;
        for(auto i:nums){
            myMap[i]++;
        }
        int maxCount = 0;
        int result = 0;
        for (auto& pair : myMap) {
            if (pair.second > maxCount) {
                maxCount = pair.second;
                result = pair.first;
            }
        }
        return result;
    }
};

结果

思路二

看到了提示尝试O(n)时间复杂度和O(1)的空间复杂度,查了一下,使用到了Boyer-Moore投票法,关于这个算法的讲解,这篇文章讲得很全面,核心思想就是针对于存在主要元素的数组,将两个不同的元素两两消去,剩下的就一定是主要元素(因为确保了存在主要元素)。

代码

cpp 复制代码
class Solution {
public:
    int majorityElement(vector<int>& nums) {
        int candidate = 0, count = 0;
        for (int num : nums) {
            if (count == 0) {
                candidate = num;
            }
            count += (num == candidate) ? 1 : -1;
        }
        return candidate;
    }
};

结果

相关推荐
我命由我123454 分钟前
动火作业极简理解
学习·职场和发展·产品运营·求职招聘·职场发展·产品经理·学习方法
万少6 分钟前
Qoder sonus模型 20分钟,复刻 马斯克 飞天汽车
前端·后端·算法
七牛云行业应用28 分钟前
Muse Spark Open 发布:Meta 称其为美国最强开放权重模型,816B 参数如何落地
算法
esop轻Mes看板亮灯分拣ESD静电安1 小时前
产线“最后一米”的破局密码:ESOP与MES的区别与深度协同
算法
陈天伟教授1 小时前
《数据处理和标注技术》课程能力图谱
人工智能·算法
LMT_Lanmantech1 小时前
HyperWorks许可:almutil显示Unit满了,数据到底准不准?
运维·服务器·算法
禁默1 小时前
论文解读与思考:基于场所地图的标识感知机器人探索方法及工程参考的价值
人工智能·深度学习·算法·机器人
维克兜率天1 小时前
【维克】统计套利建模:从因子到信号的完整流程
android·开发语言·python·算法·kotlin
Zentceh1 小时前
PixelClean 这类 AI 降噪算法是怎么工作的?从 RAW 域到 GAN 色彩重建的技术拆解
图像处理·人工智能·科技·算法·计算机视觉·车载系统·智能硬件
用户0390614707191 小时前
无感观测器理论模型(NTSM-SMO-PLL 与 SMO-PLL)
算法