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

摩尔投票法

针对问题

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

思路​:

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

  • 遍历数组:

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

  • 否则 count -= 1。

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

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

​为什么有效?​​

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

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

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

相关题目:力扣169

相关推荐
longlongzihan5 小时前
LeetCode 17电话号码的字母组合:回溯算法(DFS)详解
c++·算法·leetcode·深度优先
封印师请假去地球钓鱼5 小时前
边解边变的问题:从“决策依赖“一词出发
人工智能·算法
今晚打老虎6 小时前
c++之提高A(前缀和)(第三课)
数据结构·c++·算法
不会就选b7 小时前
算法日常・每日刷题--<贪心>26
数据结构·算法
hetao17338379 小时前
2026-09-29 hetao1733837 的刷题记录
c++·算法
欣欣之王来了10 小时前
AI合规专项:AI算法透明度的合规要求
人工智能·算法
wzdark10 小时前
分块思想在算法优化中的实践与应用4
算法
Because_of_Her110 小时前
dfs-洪水填充技巧
笔记·算法·深度优先·洪水填充
小静AI工程实验室10 小时前
RSA 算法详解:从模幂原理到 OAEP 加密、PSS 签名与 Python 实验
python·算法
xzal1210 小时前
GESP Python笔记
笔记·python·算法