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:
class Solution { public int solution(int[] 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–2025 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.
Solution
Programming language used Java 21
Time spent on task 13 minutes
Notes
not defined yet
Code: 23:51:57 UTC,
java,
verify,
result: Failed
// you can also use imports, for example:
// import java.math.*;
class Solution {
public int solution(int[] A) {
int[] counts = new int[A.length];
for(int i = 0; i < A.length; i++)
{
if(A[i] > A.length)
{
return 0;
}
else if(counts[A[i]] > 0)
{
return 0;
}
else
{
counts[A[i]] = 1;
}
}
return 0;
}
}
Analysis
expand all
Example tests
1.
0.680 s
RUNTIME ERROR,
tested program terminated unexpectedly
stdout:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 at Solution.solution(Solution.java:13) at wrapper.run(wrapper.java:27) at wrapper.main(wrapper.java:20)
1.
0.700 s
OK
Code: 23:52:39 UTC,
java,
verify,
result: Failed
// you can also use imports, for example:
// import java.math.*;
class Solution {
public int solution(int[] A) {
int[] counts = new int[A.length];
for(int i = 0; i < A.length; i++)
{
if(A[i] > A.length)
{
return 0;
}
else if(counts[A[i] - 1] > 0)
{
return 0;
}
else
{
counts[A[i] - 1] = 1;
}
}
return 0;
}
}
Analysis
Code: 23:54:11 UTC,
java,
verify,
result: Passed
// you can also use imports, for example:
// import java.math.*;
class Solution {
public int solution(int[] A) {
int[] counts = new int[A.length];
for(int i = 0; i < A.length; i++)
{
if(A[i] > A.length)
{
return 0;
}
else if(counts[A[i] - 1] > 0)
{
return 0;
}
else
{
counts[A[i] - 1] = 1;
}
}
return 1;
}
}
Analysis
Code: 23:54:28 UTC,
java,
verify,
result: Passed
// you can also use imports, for example:
// import java.math.*;
class Solution {
public int solution(int[] A) {
int[] counts = new int[A.length];
for(int i = 0; i < A.length; i++)
{
if(A[i] > A.length)
{
return 0;
}
else if(counts[A[i] - 1] > 0)
{
return 0;
}
else
{
counts[A[i] - 1] = 1;
}
}
return 1;
}
}
Analysis
Code: 23:54:36 UTC,
java,
final,
score: 
100
// you can also use imports, for example:
// import java.math.*;
class Solution {
public int solution(int[] A) {
int[] counts = new int[A.length];
for(int i = 0; i < A.length; i++)
{
if(A[i] > A.length)
{
return 0;
}
else if(counts[A[i] - 1] > 0)
{
return 0;
}
else
{
counts[A[i] - 1] = 1;
}
}
return 1;
}
}
Analysis summary
The solution obtained perfect score.
Analysis
Detected time complexity:
O(N) or O(N * log(N))
expand all
Performance tests
1.
0.700 s
OK
antiSum2
total sum is corret (equals 1 + 2 + ... N), but it is not a permutation, N = ~100,000
total sum is corret (equals 1 + 2 + ... N), but it is not a permutation, N = ~100,000
✔
OK
1.
0.870 s
OK
1.
0.870 s
OK
1.
0.890 s
OK
1.
0.790 s
OK