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

排序列表缺失数字查找:Python代码输出与预期不符求助

问题排查与修复

你的代码核心问题是循环范围错误:
你用len(myArray)+1作为循环的结束值,对于输入[1,5,7,8],列表长度为4,所以循环只遍历1到4(range(1,5)),完全没覆盖到5到8之间的数字,自然找不到缺失的6。

修复后的代码

def missing_number(myArray):
    missingArray = []
    # 取列表的起始和结束值作为循环范围
    start = myArray[0]
    end = myArray[-1]
    
    # 遍历从start到end的所有整数
    for i in range(start, end):
        if i not in myArray:
            missingArray.append(i)
    
    return missingArray

case = [1, 5, 7, 8]
print(missing_number(case))  # 输出: [2,3,4,6]

额外优化建议

因为i not in myArray在列表中是O(n)时间复杂度,如果列表很大,效率会很低。可以把原列表转成集合,将查找操作优化为O(1):

def missing_number(myArray):
    missingArray = []
    start = myArray[0]
    end = myArray[-1]
    num_set = set(myArray)  # 转成集合提升查找效率
    
    for i in range(start, end):
        if i not in num_set:
            missingArray.append(i)
    
    return missingArray

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 11:05:56