Your browser is not supported. Please, update your browser or switch to a different one. Learn more about which browsers are supported.
Task description
A non-empty array A consisting of N integers is given.
A permutation is a sequence containing each element from 1 to N once, and only once.
For example, array A such that:
A[0] = 4 A[1] = 1 A[2] = 3 A[3] = 2is a permutation, but array A such that:
A[0] = 4 A[1] = 1 A[2] = 3is not a permutation, because value 2 is missing.
The goal is to check whether array A is a permutation.
Write a function:
def solution(A)
that, given an array A, returns 1 if array A is a permutation and 0 if it is not.
For example, given array A such that:
A[0] = 4 A[1] = 1 A[2] = 3 A[3] = 2the function should return 1.
Given array A such that:
A[0] = 4 A[1] = 1 A[2] = 3the function should return 0.
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [1..100,000];
- each element of array A is an integer within the range [1..1,000,000,000].
Task timeline
def solution(ar):
"""
idea is use xor - xor of two same number cancel the same bits and make that to zero
do xor of all elements of array
do xor of 1 to length plus 1
at last xor of all should be zero
A non-empty array A consisting of N integers is given.
A permutation is a sequence containing each element from 1 to N once, and only once.
:param ar:
:return:
"""
xor_sum = 0
# xor of 1 to len ar
# xor of all elements of existing array
for index in range(1, len(ar) + 1):
xor_sum = xor_sum ^ index ^ ar[index - 1]
# at the end xor sum should be zero
if xor_sum == 0:
return 1
else:
return 0
def solution(ar):
"""
idea is use xor - xor of two same number cancel the same bits and make that to zero
do xor of all elements of array
do xor of 1 to length plus 1
at last xor of all should be zero
A non-empty array A consisting of N integers is given.
A permutation is a sequence containing each element from 1 to N once, and only once.
:param ar:
:return:
"""
xor_sum = 0
# xor of 1 to len ar
# xor of all elements of existing array
for index in range(1, len(ar) + 1):
xor_sum = xor_sum ^ index ^ ar[index - 1]
# at the end xor sum should be zero
if xor_sum == 0:
return 1
else:
return 0
def solution(ar):
"""
idea is use xor - xor of two same number cancel the same bits and make that to zero
do xor of all elements of array
do xor of 1 to length plus 1
at last xor of all should be zero
A non-empty array A consisting of N integers is given.
A permutation is a sequence containing each element from 1 to N once, and only once.
:param ar:
:return:
"""
xor_sum = 0
# xor of 1 to len ar
# xor of all elements of existing array
for index in range(1, len(ar) + 1):
xor_sum = xor_sum ^ index ^ ar[index - 1]
# at the end xor sum should be zero
if xor_sum == 0:
return 1
else:
return 0
The solution obtained perfect score.
permutations of sets like [2..100] for which the anwsers should be false