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

多数元素题解(LC:169)

 169. 多数元素
 

 核心思想(Boyer-Moore 投票算法):

  • 解题思路:可以使用 Boyer-Moore 投票算法、该算法的核心思想是:

    • 维护一个候选元素和计数器、初始时计数器为 0。

    • 遍历数组:

      • 当计数器为 0 时、设置当前元素为候选元素。

      • 如果当前元素等于候选元素、计数器加 1。否则、计数器减 1

    • 最终、候选元素即为多数元素。

思路类比:士兵打仗(两军对抗)

假设:

  • 每个数是一名士兵、士兵可能来自甲军(候选元素)或乙军(非候选元素)

  • 每当我们遇到一个士兵:

    • 如果他是甲军、我们 +1。

    • 如果他是乙军、我们 -1(理解为与甲军一人同归于尽)。

  • 一旦计数为0、说明甲军原来的优势被抵消了、我们重新选择当前的士兵作为新的候选(也就是新的甲军)。

由于题目保证多数元素存在(出现次数 > n/2)、那么无论中间怎样对冲、最后剩下的那个一定是甲军士兵(多数元素)

class Solution {public int majorityElement(int[] nums) {int count = 0;int candidate = 0;for (int num : nums) {if (count == 0) {candidate = num;}if (num == candidate) {count++;} else {count--;}}return candidate;}
}

这个算法的时间复杂度是 O(n)空间复杂度是 O(1)

http://www.dtcms.com/a/166703.html

相关文章:

  • “BYD SHENZHEN”启运,搭载超7000台比亚迪新能源车前往巴西
  • QT6 源(62)篇五:阅读与注释 QString 这个类,先给出官方综述,带一些翻译。总篇目太大,代码就有 2000 行
  • 机器学习,深度学习
  • 全面接入!Qwen3现已上线千帆
  • 第八节:目录操作
  • 晶振:从消费电子到航天领域的时间精度定义者
  • 第六部分:实战项目与拓展
  • VS Code技巧2:识别FreeCAD对象
  • 可视化图解算法:判断是否完全二叉树
  • 基于SpringBoot的母婴商城系统设计与实现(附源码+PPT+论文)
  • 【操作系统】进程和线程的区别
  • /var/log/sssd/` 目录解析
  • HTN77A0原理图提供聚能芯半导体禾润一级代理技术支持免费送样
  • MySQL学习笔记(基础篇)
  • 解锁Windows异步黑科技:IOCP从入门到精通
  • 虚拟机安装SQLServer2000
  • 用Ai学习wxWidgets笔记——自制wxWidgets开发参考手册(主体)
  • 在油气地震资料积分法偏移成像中,起伏地表处理
  • agent course-2
  • CBC(Clock Boundary Crossing)简介
  • SVTAV1 编码函数 svt_aom_is_pic_skipped
  • Linux -- 操作系统
  • 修改linux账号名
  • TorchRec - PyTorch生态下的推荐系统解决方案 [官方文档翻译]
  • MySQL基础关键_002_DQL
  • 从技术角度看Facebook的隐私保护机制
  • 从AI应用到职业跃迁,AI已成智能时代关键变量
  • Windows 匿名管道通信
  • C++静态编译标准库(libgcc、libstdc++)
  • AE模板 动感节奏快闪图文展示介绍片头 Typographic Intro