python笔试题:给定一个由N个整数组成的数组A,返回A中不出现的最小正整数(大于0)

最近写了一道笔试题,题目:给定一个由N个整数组成的数组A,返回A中不出现的最小正整数(大于0)

例如:给定A=[1,3,6,4,1,2],返回5

给定A=[1,2,3],返回4

给定A=[-1,-3],返回1

python解决方案如下所示:

def solution(A): 
    A.sort()
    c=max(A)
    i=0
    new_A = []
    for i in range(len(A)):
            if A[i] >= 0:
                new_A.append(A[i])
                i += 1
    print(new_A)
    if c<=0:
        return 1
    if c>0:
        for j in range(len(new_A)):
            if new_A[0] >= 2:
                return 1
            if new_A[0] < 2 and new_A[j+1]-new_A[j] <= 1:
                j += 1
                if j == len(new_A)-1:
                    return c+1
                elif new_A[0] < 2 and new_A[j+1]-new_A[j] >= 2:
                    return new_A[j]+1

# solution([0,0,0])
# solution([1,1,1])
solution([5,6,6])
# solution([2, 4, 7, 1, -3, 0, 5])
# solution([-1,-2,3])
# solution([-1,-3])
# solution([-1,-2,-3,6])


版权声明:本文为weixin_37986839原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。