第10题:去重

发布: (2026年1月20日 GMT+8 14:56)
2 min read
原文: Dev.to

Source: Dev.to

Problem Description

我们需要一个函数,在保持元素原始顺序的同时删除列表中的重复项。

示例
remove_duplicates([1, 2, 2, 3, 1, 4]) 应返回 [1, 2, 3, 4]

Solution

def remove_duplicates(lst):
    """
    Removes duplicates from a list while maintaining order.
    """
    seen = set()
    result = []

    for i in lst:
        if i not in seen:
            seen.add(i)
            result.append(i)
    return result

# Test case
print(remove_duplicates([1, 2, 2, 3, 1, 4]))
# Output: [1, 2, 3, 4]

Explanation

  1. 初始化

    • seen = set() – 用于存储已经出现过的元素。
    • result = [] – 将保存去重后的最终列表。
  2. 遍历输入列表

    for i in lst:
    • 如果 i 不在 seen 中,则说明是第一次出现:
      • 将其加入 seenseen.add(i)
      • 将其追加到 resultresult.append(i)
    • 如果 i 已经在 seen 中,则跳过。
  3. 返回 result 列表,此时它包含了每个唯一元素,且顺序保持为首次出现的顺序。

示例走查 [1, 2, 2, 3, 1, 4]

步骤元素 i操作seenresult
11不在 seen → 添加并追加{1}[1]
22不在 seen → 添加并追加{1, 2}[1, 2]
32已在 seen → 跳过{1, 2}[1, 2]
43不在 seen → 添加并追加{1, 2, 3}[1, 2, 3]
51已在 seen → 跳过{1, 2, 3}[1, 2, 3]
64不在 seen → 添加并追加{1, 2, 3, 4}[1, 2, 3, 4]

最终结果: [1, 2, 3, 4]

Back to Blog

相关文章

阅读更多 »

100 天 DSA 编码挑战的第 82 天

问题 在二维矩阵中寻找峰值元素 GeeksforGeeks 题目链接 https://www.geeksforgeeks.org/problems/find-the-peak-element-in-a-2d-matrix/1 难度...