Tasks Details
easy
1.
PermCheck
Check whether array A is a permutation.
Task Score
100%
Correctness
100%
Performance
100%
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:
function 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].
Copyright 2009–2023 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.
Solution
Programming language used JavaScript
Total time used 10 minutes
Effective time used 10 minutes
Notes
not defined yet
Task timeline
Code: 01:01:14 UTC,
java,
autosave
Code: 01:02:59 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
let max = 0
for (let i = 0; i < A.length; i++){
if (A[i] > max) max = A[i]
}
if (A.length !== max) return 0
let Indexes = Array(max).fill(0)
for (let i = 0; i < A.length; i++){
Indexes[A[i]-1]++
}
result = Indexes.indexOf(0)
if (result === -1) {
return 1
} else {
return 0
} // write your code in JavaScript (Node.js 8.9.4)
}
Analysis
Code: 01:10:18 UTC,
js,
verify,
result: Passed
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
let max = 0
for (let i = 0; i < A.length; i++){
if (A[i] > max) max = A[i]
}
if (A.length !== max) return 0
let Indexes = Array(max).fill(0)
for (let i = 0; i < A.length; i++){
Indexes[A[i]-1]++
}
result = Indexes.indexOf(0)
if (result === -1) {
return 1
} else {
return 0
} // write your code in JavaScript (Node.js 8.9.4)
}
Analysis
Code: 01:10:21 UTC,
js,
final,
score: 
100
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
let max = 0
for (let i = 0; i < A.length; i++){
if (A[i] > max) max = A[i]
}
if (A.length !== max) return 0
let Indexes = Array(max).fill(0)
for (let i = 0; i < A.length; i++){
Indexes[A[i]-1]++
}
result = Indexes.indexOf(0)
if (result === -1) {
return 1
} else {
return 0
} // write your code in JavaScript (Node.js 8.9.4)
}
Analysis summary
The solution obtained perfect score.
Analysis
Detected time complexity:
O(N) or O(N * log(N))
expand all
Correctness tests
1.
0.072 s
OK
2.
0.072 s
OK
1.
0.072 s
OK
2.
0.068 s
OK
1.
0.068 s
OK
2.
0.068 s
OK
3.
0.068 s
OK
4.
0.068 s
OK
1.
0.068 s
OK
2.
0.068 s
OK
3.
0.072 s
OK
4.
0.068 s
OK
1.
0.072 s
OK
2.
0.068 s
OK
permutations_of_ranges
permutations of sets like [2..100] for which the anwsers should be false
permutations of sets like [2..100] for which the anwsers should be false
✔
OK
1.
0.068 s
OK
2.
0.068 s
OK
3.
0.072 s
OK
expand all
Performance tests
1.
0.080 s
OK
2.
0.080 s
OK
1.
0.112 s
OK
2.
0.116 s
OK
1.
0.108 s
OK
2.
0.108 s
OK
1.
0.112 s
OK
2.
0.108 s
OK
1.
0.068 s
OK
2.
0.096 s
OK
3.
0.072 s
OK
1.
0.072 s
OK
2.
0.072 s
OK
3.
0.080 s
OK
4.
0.116 s
OK
5.
0.116 s
OK