news 2026/4/25 21:41:06

算法刷题第12天|LeetCode 169 多数元素:从暴力到最优解,一次吃透4种解法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法刷题第12天|LeetCode 169 多数元素:从暴力到最优解,一次吃透4种解法

算法刷题第12天|LeetCode 169 多数元素:从暴力到最优解,一次吃透4种解法

大家好,这是我刷题打卡的第12天,今天搞定LeetCode 169 多数元素,顺便整理第二周学习小结~

📌 题目回顾

给定数组 nums,返回出现次数 > ⌊n/2⌋ 的元素,题目保证一定存在。
示例:

- [3,2,3] → 3
- [2,2,1,1,1,2,2] → 2

进阶要求:O(n) 时间 + O(1) 空间 。



🧩 四种解法全实现

1. 哈希表计数(最直观)

遍历数组,用哈希表统计次数,超过一半直接返回。

- 时间:O(n)
- 空间:O(n)

python
def majorityElement(nums):
from collections import defaultdict
cnt = defaultdict(int)
for num in nums:
cnt[num] += 1
if cnt[num] > len(nums)//2:
return num


优点:好写好懂;缺点:占用额外空间。

2. 排序取中位数(极简代码)

多数元素超过一半,排序后中间必为答案。

- 时间:O(n log n)
- 空间:O(log n)~O(1)

python
def majorityElement(nums):
nums.sort()
return nums[len(nums)//2]


一行搞定,面试快速写对很稳。

3. 分治法(递归思想)

把数组切成左右两半,分别求多数,再合并验证。

- 时间:O(n log n)
- 空间:O(log n)
适合练分治思路,工程里一般不用。

4. 摩尔投票法(最优解 ⭐)

核心:多数元素数量 > 其余总和,两两抵消最后必剩它。

- 时间:O(n)
- 空间:O(1)

python
def majorityElement(nums):
candidate = None
count = 0
for num in nums:
if count == 0:
candidate = num
count += 1 if num == candidate else -1
return candidate






版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 21:37:51

【A11】身份证号无损压缩到48位的Rust实现

方案概述 将18位身份证号(含校验码)压缩为48位整数(可存储在u64的低48位),布局如下:字段位宽说明addr20 bits行政区划编码(高3位0表示非大陆,否则为大陆)date18 bits出生…

作者头像 李华
网站建设 2026/4/25 21:33:25

HX711数据不稳定问题

根本原因:PC14/PC15 是 STM32F1 的 OSC32 晶振引脚,即使不启用 LSE,这两个引脚也受备份域保护,有以下严重限制: 最大输出频率仅 3MHz(无法可靠驱动 SCK) 驱动能力极弱(最大灌电流仅 …

作者头像 李华
网站建设 2026/4/25 21:29:31

光伏四可装置设备性能评估:光伏组件衰减率与逆变器效率监测

光伏组件与逆变器作为光伏系统能量转换、传输的核心设备,其运行性能直接决定系统发电效率、生命周期收益及安全稳定性。光伏四可装置(可观、可测、可控、可调)通过构建精准的性能评估体系,实现组件衰减率与逆变器效率的全周期监测…

作者头像 李华
网站建设 2026/4/25 21:26:02

商超装修吊楣装饰铝拉网现场复尺

做工程采购这几年,我见过太多供应商在展厅里把样品吹得天花乱坠,一到项目现场就原形毕露。装饰金属网这行尤其如此——材料属性、表面处理、加工精度、交付周期,任何一环出问题,工地上几十号人都得等你。后来我养成了个习惯&#…

作者头像 李华
网站建设 2026/4/25 21:24:39

【数据结构精讲】线性表四大核心:数组 / Vector、栈、队列、链表(原理 + 模板 + 避坑 + 选型)

一、线性表基础定义线性表是n 个数据元素的有限序列,元素之间满足「一对一」的前驱后继关系,除首尾元素外,每个元素有且仅有一个前驱和一个后继。本文聚焦线性表的四大核心实现:数组 / Vector、栈、队列、链表,从底层原…

作者头像 李华