我参加了Codility的一个Demo任务,要求编写一个函数:
def solution(A)
该函数接收一个由N个整数组成的数组A,并返回A中未出现的最小正整数(大于0)。
例如,对于给定的A = [1, 3, 6, 4, 1, 2],函数应该返回5。
对于给定的A = [1, 2, 3],函数应该返回4。
对于给定的A = [-1, -3],函数应该返回1。
请针对以下假设编写高效算法:
N是[1..100,000]范围内的整数; 数组A的每个元素都是[-1,000,000..1,000,000]范围内的整数。
我的解决方案:
尽管我尝试了所有的输入,都得到了正确的输出,但我的分数仅为22%。请问有人能够指出我错在哪里吗?
def solution(A)
该函数接收一个由N个整数组成的数组A,并返回A中未出现的最小正整数(大于0)。
例如,对于给定的A = [1, 3, 6, 4, 1, 2],函数应该返回5。
对于给定的A = [1, 2, 3],函数应该返回4。
对于给定的A = [-1, -3],函数应该返回1。
请针对以下假设编写高效算法:
N是[1..100,000]范围内的整数; 数组A的每个元素都是[-1,000,000..1,000,000]范围内的整数。
我的解决方案:
def solution(A):
# write your code in Python 3.6
l = len(A)
B = []
result = 0
n = 0
for i in range(l):
if A[i] >=1:
B.append(A[i])
if B ==[]:
return(1)
else:
B.sort()
B = list(dict.fromkeys(B))
n = len(B)
for j in range(n-1):
if B[j+1]>B[j]+1:
result = (B[j]+1)
if result != 0:
return(result)
else:
return(B[n-1]+1)
尽管我尝试了所有的输入,都得到了正确的输出,但我的分数仅为22%。请问有人能够指出我错在哪里吗?