Я взял следующую демонстрационную задачу codility. Напишите функцию:
def solution (A)
, которая, учитывая массив A из N целых чисел, возвращает наименьшее положительное целое число (больше 0) что не встречается в A.
Например, если 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%. Может ли кто-нибудь выделить, где я иду не так