Skip to content

Instantly share code, notes, and snippets.

@grevych
Last active August 27, 2019 21:30
Show Gist options
  • Save grevych/d4ee65ab9b3892fe655556b645ea1a91 to your computer and use it in GitHub Desktop.
Save grevych/d4ee65ab9b3892fe655556b645ea1a91 to your computer and use it in GitHub Desktop.
Find the first missing element between 1 and N in an array of integers. -1000000 <= x <= 1000000
LIMIT = 1000000
def unmaskNumber(number):
if number <= -LIMIT:
number = number + LIMIT
elif number > LIMIT:
number = number - LIMIT
return number
def maskNumber(number):
if number <= 0:
number -= LIMIT
else:
number += LIMIT
return number
def solution(A):
for index in range(len(A)):
number = unmaskNumber(A[index])
if number <= 0:
continue
if number > len(A):
continue
A[number - 1] = maskNumber(A[number - 1])
for index in range(1, len(A)):
if A[index] > -LIMIT and A[index] < LIMIT:
return index + 1
return len(A) + 1
print(solution([0, 1, 2, 3]))
print(solution([1, 2, 3]))
print(solution([6, -2, 1, 3, 8]))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment