首页 > 解决方案 > 从列表中查找缺失的元素

问题描述

我编写此代码是为了从给定列表中查找丢失的正整数,但None在某些情况下它仍然返回。

例如,给定数组A = [2, 4, 1, 5],函数应该返回 3,因为它是连续序列 (1 2 3 4 5) 中缺失的元素。

我究竟做错了什么?

def solution(A):
    i = 1
    while i<len(A):
        if i not in A:
            return i
        i += 1

标签: pythonpython-3.x

解决方案


您需要意识到这i < len(A)会导致一些问题。

给定这个例子:

A = [1, 2, 3, 5]

看起来很清楚,想要的答案是4,但你的功能是给予None。这是因为len(A) == 4,因此,您的循环条件是i < 4,它有效地从 1 枚举i到 3。

既然要找出缺失的数字,不妨在i到达列表中的最大数字时停止循环,而不是列表的长度,所以:

while i < max(A):

是对的。


推荐阅读