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

算法训练营Day12| LeetCode 169. 多数元素

题目链接:http:// https://leetcode.cn/problems/majority-element/

视频链接:http:// https://leetcode.cn/problems/majority-element/solutions/146074/duo-shu-yuan-su-by-leetcode-solution/

我看到题目的第一想法:

  1. 刚看到题目,我第一反应是用一个计数器,遍历数组统计每个元素出现的次数,次数超过n/2的就是答案。
  2. 但马上想到,这种方法需要额外的空间来存次数,不确定有没有更省空间的方法。
  3. 因为题目说 “多数元素一定存在”,我觉得它的出现次数超过一半,会不会有什么更巧妙的办法,不用统计所有数?

遇到的困难:

  1. 一开始只想到用哈希表 / 字典统计次数,但不知道怎么实现O (1) 空间复杂度的解法。
  2. 对摩尔投票法(Boyer-Moore)的原理理解不深,一开始想不通为什么 “正负抵消” 后剩下的一定是多数元素。
  3. 写代码时,不知道怎么处理候选元素和计数的更新逻辑,容易把条件写错。

心得:

  1. 摩尔投票法的核心是 “正负抵消”:多数元素出现次数大于一半,所以即使和其他元素一一抵消,最后剩下的也一定是它。
  2. 这种方法只需要一次遍历,时间复杂度 O (n),空间复杂度 O (1),比统计次数的方法更高效。
  3. 算法题不只有 “暴力统计” 一种思路,学会利用题目给的特殊条件(比如 “多数元素一定存在”),能找到更巧妙的解法。
  4. 做题时要先思考优化空间,理解算法背后的原理比会写代码更重要。
http://www.jsqmd.com/news/699771/

相关文章:

  • 07 开发商购买土地 数组 (前缀和)
  • MASA模组汉化终极指南:让Minecraft专业工具说中文
  • 【算法笔记】二分查找与二分答案
  • 解决DWPose预处理器ONNX运行时错误的深度技术分析与修复方案
  • 集团总部失控:诸侯是怎么养成的?
  • 为什么 Agent 框架越来越多:LangChain、LangGraph、AutoGen 生态对比
  • 【嵌入式调试新纪元】:VSCode 2026原生支持SWD over USB-C、内存映射热重载与双核同步断点(仅限首批127个MCU型号)
  • Cursor Pro激活器实战:3步高效破解AI编程助手限制
  • Materials Project API技术架构与高级应用指南:从数据查询到材料科学创新
  • stp思维导图
  • k1周:多模态融合-阿尔茨海默病检测
  • 剪映专业版教程:制作百叶窗转场效果
  • 从 Agent 到 Agentic AI:企业级智能体工程实现的关键差异
  • 显卡驱动彻底清理指南:Display Driver Uninstaller深度解析与实战应用
  • Docker 与 Kubernetes 部署最佳实践 2027
  • UnityFigmaBridge:打破设计与开发壁垒的终极协作解决方案
  • AI 伴侣的伦理困境:当代码学会说「我爱你」,人类准备好了吗?
  • 为什么92%的嵌入式团队在LLM移植中踩坑?:揭秘C语言指针对齐陷阱、中断上下文推理崩溃、Flash页擦写冲突三大“静默杀手”
  • AI Agent在体育与娱乐领域的应用:数据分析与体验优化
  • 如何快速解密Wii U游戏文件:CDecrypt工具完整指南 [特殊字符]
  • Python快速验证分类算法:scikit-learn实战指南
  • BilibiliDown:跨平台B站视频下载的完整解决方案
  • Claude-Code-Workflow:基于AI的智能研发工作流引擎实战解析
  • 嵌入式团队紧急升级预警:VSCode 2026.1起废弃legacy GDB adapter——3类老旧JTAG探针将彻底失联?
  • 卡梅德生物技术快报|哺乳动物细胞表达系统:载体优化、宿主选型与位点重组技术实现方案
  • 第5章:时间的相对性思辨
  • Windows上使用VS2026和CMake编译LearnOpenGL项目源代码
  • 深入解析 Ansible:从入门到实践
  • 如何快速搭建全平台直播弹幕抓取系统:终极实战指南
  • 解密ClickShow:Windows鼠标交互的视觉化革命