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

为何我的寻找缺失最小正整数的Python代码未通过全部测试用例?

问题分析:寻找缺失的最小正整数

编码挑战要求

编写函数 def solution(A),给定一个包含N个整数的数组A,返回数组中未出现的最小正整数(大于0)。

示例

  • 输入A = [1, 3, 6, 4, 1, 2],返回5;
  • 输入A = [1, 2, 3],返回4;
  • 输入A = [-1, -3],返回1。

我的代码

def solution(A):
    A.sort()
    B = list(set(A))
    for x in range(B[0],B[-1]):
        if x not in A and x>0:
            return x
    if B[-1]<0:
        return 1
    else:
        return B[-1]+1

遗漏的测试场景与问题分析

你的代码主要遗漏了以下关键场景:

  • 未优先检查1是否存在:只要数组中没有1,无论其他正整数多大,答案都是1。比如输入A = [2,3,4]、A = [0,5]、A = [2,2]时,你的代码会返回最大数+1,但正确结果应为1。这是因为你的循环从数组的最小元素开始,完全跳过了对1的检查。
  • 空数组处理缺失:如果输入A = [],代码会因B[0]和B[-1]索引越界直接报错,而正确结果应为1。
  • 循环范围逻辑缺陷:当数组的最小元素大于1时,循环从该元素开始,不会检查1到该元素之间的所有数,导致遗漏最小的缺失正整数。

修正后的代码示例

def solution(A):
    if not A:
        return 1
    # 过滤正整数、去重并排序
    positive_nums = sorted(set(num for num in A if num > 0))
    if not positive_nums:
        return 1
    # 1不存在直接返回1
    if positive_nums[0] != 1:
        return 1
    # 检查连续正整数的间隙
    for i in range(len(positive_nums)-1):
        if positive_nums[i+1] - positive_nums[i] > 1:
            return positive_nums[i] + 1
    # 所有正整数连续,返回最后一个+1
    return positive_nums[-1] + 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 11:15:37