Python 面试算法题目去重字典但是不能使用额外数组空间

Python 面试算法题目去重字典但是不能使用额外数组空间

描述: 去重list,但是不能使用额外数组空间, 例如 nums = [0,2,3,1,5,0,2,3] 输出 [1,5]

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
nums = [1, 2, 3, 2, 2, 2, 1, 1, 1]

n = len(nums)
i = 0
while i < n:
j = i + 1
while j < n:
if nums[j] == nums[i]:
# 删除重复元素
del nums[j]
n -= 1
else:
j += 1
i += 1

print(nums) # 输出:[1, 2, 3]

代码解释

如果不能使用额外的数据结构和空间(例如集合、字典、列表等辅助空间),我们只能在原地修改列表 nums,常见方式是双指针法 + 原地遍历删除重复项,不过因为需要保留顺序同时去重,最朴素的方法是 双层循环 原地去重。

采用从头开始和第二个进行对比,如果一致则删除,然后长度-1,头部加1 否则 我们就将就j+1, 当j > n的时候就实现了遍历所有了。


Python 面试算法题目去重字典但是不能使用额外数组空间
https://dreamshao.github.io/2025/07/23/python面试题目1/
作者
Yun Shao
发布于
2025年7月23日
许可协议