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

查找列表中唯一独特值的Codewars题目解法超时问题求助

超时原因分析

你当前的解法时间复杂度为O(n²),arr.count(element)方法每次调用都会完整遍历一次数组统计元素出现次数,叠加外层的遍历逻辑,当测试用例的数组元素量级很大时,执行耗时会远超阈值。

优化解法

方案1:通用频率统计(适用性广)

使用Python标准库collections.Counter仅需遍历数组1次即可完成所有元素的频率统计,总时间复杂度为O(n),可以轻松应对大数组场景:

from collections import Counter

def find_uniq(arr):
    freq_counter = Counter(arr)
    for num, count in freq_counter.items():
        if count == 1:
            return num

方案2:针对题目特性的极致优化

该题规则为数组中仅存在两种不同数值,其中一种仅出现1次,另一种占据剩余所有位置。利用这个特性我们可以先快速定位到重复的通用值,再遍历一次找唯一的特殊值即可,常数复杂度更低,执行速度更快:

def find_uniq(arr):
    # 先确定占多数的通用值
    first, second = arr[0], arr[1]
    if first == second:
        common_val = first
    else:
        # 前两个值不同时,看第三个值和谁一致就能确定通用值
        common_val = first if arr[2] == first else second
    # 遍历找到唯一的特殊值
    for num in arr:
        if num != common_val:
            return num

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:27:04