You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DrRacket/Scheme编程求助:编写无重复数字判断函数

判断列表是否无重复数字的函数实现

这里提供几种简洁高效的实现方式,以Python为例:

方法一:利用集合去重特性(最简洁)

集合会自动剔除重复元素,通过比较原列表和集合的长度即可判断是否存在重复:

def has_unique_numbers(num_list):
    return len(num_list) == len(set(num_list))
  • 原理:如果列表无重复,集合长度和原列表长度一致;若有重复,集合会自动去重,长度更小。
  • 时间复杂度:O(n),集合创建过程为线性遍历。

方法二:遍历+集合记录(提前终止)

遍历列表时用集合记录已出现的元素,遇到重复直接返回结果,无需遍历整个列表:

def has_unique_numbers(num_list):
    seen = set()
    for num in num_list:
        if num in seen:
            return False
        seen.add(num)
    return True
  • 优势:当列表前半部分存在重复时,会立即返回结果,比方法一更高效。
  • 时间复杂度:最坏情况O(n),最好情况O(1)(第一个元素就重复)。

方法三:排序后检查相邻元素

先对列表排序,重复元素会相邻,遍历检查相邻元素是否相等:

def has_unique_numbers(num_list):
    sorted_list = sorted(num_list)
    for i in range(len(sorted_list) - 1):
        if sorted_list[i] == sorted_list[i+1]:
            return False
    return True
  • 适用场景:对内存使用有要求,不想额外存储整个集合的情况。
  • 时间复杂度:O(n log n),主要由排序操作决定。

内容的提问来源于stack exchange,提问作者sbb123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 06:10:38