Task description:
An array A consisting of N different integers is given. The array contains integers in the range [1..(N + 1)], which means that exactly one element is missing.
Your goal is to find that missing element.
Write a function:
def solution(A)
that, given an array A, returns the value of the missing element.
For example, given array A such that:
A[0] = 2 A[1] = 3 A[2] = 1 A[3] = 5
the function should return 4, as it is the missing element.
Assume that:
- N is an integer within the range [0..100,000];
- the elements of A are all distinct;
- each element of array A is an integer within the range [1..(N + 1)].
Complexity:
- expected worst-case time complexity is O(N);
- expected worst-case space complexity is O(1), beyond input storage (not counting the storage required for input arguments).
Solution:
def solution(p):#[1,3,2,5,6]
newp = sorted(p) #[1,2,3,5,6]
gap={} #{1:1,2:1,3:1,5:2,6:1}
l = [] #store only the gap number
for i ,j in enumerate(newp):
gap[j] = (j-int(i))
for x in gap.values():#[1,1,1,2,1]
l.append(x)
nl = set(l)
sl = list(nl)#[1,2]
a = l.count(sl[0]) #3
b = l.count(sl[1]) #1
if b == 1 :
get_value_index=l.index(sl[1]) #3
else:
get_value_index=l.index(sl[1]) #3
return newp[get_value_index]-1