当前位置: 首页 > news >正文

力扣HOT100之技巧:169. 多数元素


这道题如果不考虑空间复杂度和时间复杂度的限制的话很好做,一种思路是通过一次遍历将所有元素的数量记录在一个哈希表中,然后我们直接返回出现次数最多的键即可。另一种思路是直接对数组进行排序,数组中间的值一定是多数元素,因为该元素超过半数,在有序的状态下,无论如何都会在数组的中间位置出现,这个也很好想。
但是考虑时间和空间的限制,这道题就很难想了,这道题我是看了华南溜达虎的视频才做出来的,感觉他对摩尔投票法讲解的还不错,也可以结合K神的题解来看,更加通俗易懂。
我们定义countresultresult代表多数元素,而count对应多数元素的数量,初始化为0,我们先假定nums[0]为多数元素,遍历整个数组nums,当nums[i] == result时,我们将当前多数元素的数量+1,然后遍历下一个元素,当nums[i] != result时,我们就将count减一,当count被减为负数时,说明当前认定的多数元素可能不是真正的多数元素,我们将result赋值为当前的nums[i],并将count赋值为1(对应当前多数元素的数量)
经历过一次遍历后,由于多数的数量超过半数(至少比其他的元素个数之和多1),无论数组如何排列,最后一定是多数的票数占优,最后result一定会被赋值为多数。

class Solution {
public:int majorityElement(vector<int>& nums) {int count = 0;int result = nums[0];for(int i = 0; i < nums.size(); i++){if(nums[i] == result)count++;else{count--;if(count < 0){result = nums[i];count = 1;}   }}return result;}
};

相关文章:

  • 做网站上时需要3d预览功能月嫂免费政府培训中心
  • 做问卷调查的是哪个网站好share群组链接分享
  • 泉州市华泰建设工程有限公司网站高端网站建设案例
  • 主流动态网站开发语言河北网站优化公司
  • 真人做爰网站口碑营销的产品
  • 网站查询功能怎么做网页搜索优化seo
  • 代码随想录算法训练营day2
  • 图像匹配算法 笔记2025
  • day53 神经网络调参指南
  • Packagerun:VSCode 扩展 快捷执行命令
  • ajax访问阿里云天气接口,获取7天天气
  • 相机Camera日志实例分析之三:相机Camx【视频光斑人像录制】单帧流程日志详解
  • JSON 与 AJAX
  • 安装配置以太链钱包工具
  • 解决 PyTorch 与 Python 3.12 的兼容性问题:`operator torchvision::nms does not exist` 深度解析
  • 台湾TEMI协会竞赛——2、足球机器人组装教学
  • Package vs. Directory (包 vs. 目录)
  • 机器人坐标变换TF(ROS Transform)示例解释
  • AWS-EFS
  • C++之容器适配器介绍 以及 STL--stack queue deque
  • Postgresql日常使用
  • Redis缓存三大难题:穿透、击穿、雪崩
  • FastDFS分布式储存
  • 【Linux】regmap子系统
  • WEB JWT
  • Java程序员如何设计一个高并发系统?