消失的数字
问题描述
给定长度为 n 的数组(数字范围 1~n,有重复),找出所有未出现的数字。
示例:输入 [4,3,2,7,8,2,3,1],消失的数字是 [5,6]。
视频
Python 找出数组中消失的数字 | 原地标记法+哈希集合
解决方案
方案1:哈希集合对比法(直观易懂)
1.1 核心设计思路
利用集合的“快速查找”特性:
- 将数组中的所有数字存入集合,自动去重;
- 遍历 1~n 的所有数字,检查哪些数字不在集合中,这些就是消失的数字。
该方法的优势是逻辑简单、易于理解,适合新手入门。
1.2 完整代码
def find_disappeared_numbers(nums):
n = len(nums) # 数组长度,对应数字范围1~n
num_set = set(nums) # 将数组转为集合,去重且支持O(1)时间查找
res = []
# 遍历1~n,检查每个数字是否在集合中
for i in range(1, n + 1):
if i not in num_set:
res.append(i)
return res
# 测试用例
nums = [4,3,2,7,8,2,3,1]
print(find_disappeared_numbers(nums)) # 输出:[5,6]
1.3 效率分析
- 时间复杂度: O ( n ) O(n)
399



被折叠的 条评论
为什么被折叠?



