【数据结构与算法Trip第4站】摩尔投票法

摩尔投票法

针对问题

当需要找寻一个数组中,存在某个数字出现的次数大于数组长度一半时。(等于情况不一定成立)

思路​:

  • 假设第一个数字是候选多数元素 candidate,并初始化计数器 count = 1。

  • 遍历数组:

  • 如果当前数字等于 candidate,则 count += 1。

  • 否则 count -= 1。

  • 如果 count == 0,则更换 candidate为当前数字,并重置 count = 1。

  • 最后剩下的 candidate就是多数元素。

​为什么有效?​​

  • 因为多数元素的数量比其他所有元素的总和还多,所以它一定能"战胜"其他数字。

​时间复杂度​:O(n)(只需遍历一次)

​空间复杂度​:O(1)(只用了常数空间)

相关题目:力扣169

相关推荐
zander2586 分钟前
LeetCode 5. 最长回文子串
算法
hanlin031 小时前
刷题笔记:力扣第84题-柱状图中最大的矩形
笔记·算法·leetcode
青少儿编程课堂2 小时前
威佐夫博弈(双堆取子游戏)解析
c++·python·算法·bfs·信息学竞赛
辰烨chenye6 小时前
LeetCode Hot 100 题解 · 普通数组篇
算法·leetcode·职场和发展
hqyjzsb9 小时前
零 AI 项目经验,学 Python 转型 AI 的正确顺序是什么?
开发语言·人工智能·python·算法·职场和发展·数据挖掘·数据分析
辰烨chenye9 小时前
LeetCode Hot 100 题解 · 二分篇
java·算法·leetcode
微功夫信息技术9 小时前
分层多智能体强化学习驱动的非急救转运公平 - 效率统一调度系统研究与实践
人工智能·学习·算法·动态规划
sanjiaomao33310 小时前
从论文公式到Python实现:用单元测试校验滑动平均算法
python·算法·单元测试
乐迪信息10 小时前
如何通过AI防爆摄像机精准判断船舶超速?
大数据·人工智能·算法·安全·目标跟踪
大圣编蚕11 小时前
Java ByteArrayInputStream 详解:从入门到实战
java·开发语言·算法