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 15 minutes
Notes
not defined yet
Code: 22:48:40 UTC,
java,
autosave
Code: 22:48:46 UTC,
java,
autosave
Code: 22:49:16 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
}
}
Code: 22:49:27 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for
}
}
Code: 22:52:26 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for ()
}
}
Code: 22:52:43 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for (int i=0 ; i<A.length; i++){
}
}
}
Code: 22:53:54 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for (int i=0 ; i<A.length; i++){
if()
}
}
}
Code: 22:54:07 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
int value=0;
for (int i=0 ; i<A.length; i++){
}
}
}
Code: 22:54:30 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for (int i=0 ; i<A.length; i++){
int value = A[i];
if(value >0){
}
}
}
}
Code: 22:54:46 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for (int i=0 ; i<A.length; i++){
int value = A[i];
if(value >0){
check[value] = true;
}
}
}
}
Code: 22:55:03 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for (int i=0 ; i<A.length; i++){
int value = A[i];
if(value >0 && value<check.len){
check[value] = true;
}
}
}
}
Code: 22:55:13 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for (int i=0 ; i<A.length; i++){
int value = A[i];
if(value >0 && value<check.length){
check[value] = true;
}
}
}
}
Code: 22:55:26 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for (int i=0 ; i<A.length; i++){
int value = A[i];
if(value >0 && value<check.length){
check[value] = true;
}
}
}
}
Code: 22:55:57 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for (int i=0 ; i<A.length; i++){
check[]
}
}
}
Code: 22:56:07 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for (int i=0 ; i<A.length; i++){
check[A[i]] = true;
}
}
}
Code: 22:56:17 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for (int i=0 ; i<A.length; i++){
check[A[i]] = true;
}
for (int i=1 ; )
}
}
Code: 22:56:39 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for (int i=0 ; i<A.length; i++){
check[A[i]] = true;
}
for (int i=1 ; i<check.length ; i++){
}
}
}
Code: 22:56:58 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for (int i=0 ; i<A.length; i++){
check[A[i]] = true;
}
for (int i=1 ; i<check.length ; i++){
if( check[i] == false ){
}
}
}
}
Code: 22:57:22 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for (int i=0 ; i<A.length; i++){
check[A[i]] = true;
}
for (int i=1 ; i<check.length ; i++){
if( check[i] == false ){
return 0;
}
}
return 1;
}
}
Code: 22:57:23 UTC,
java,
verify,
result: Failed
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for (int i=0 ; i<A.length; i++){
check[A[i]] = true;
}
for (int i=1 ; i<check.length ; i++){
if( check[i] == false ){
return 0;
}
}
return 1;
}
}
Analysis
expand all
Example tests
1.
0.004 s
OK
1.
0.004 s
RUNTIME ERROR,
tested program terminated with exit code 1
stderr:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 at Solution.solution(Solution.java:14) at Exec.run(exec.java:46) at Exec.main(exec.java:31)
Code: 23:02:12 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for (int i=0 ; i<A.length; i++){
check[A[i]] = true;
}
for (int i=1 ; i<check.length ; i++){
if( check[i] == false ){
return 0;
}
}
return 1;
}
}
Code: 23:02:35 UTC,
java,
autosave
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for (int i=0 ; i<A.length; i++){
if(A[i] > A.length)
check[A[i]] = true;
}
for (int i=1 ; i<check.length ; i++){
if( check[i] == false ){
return 0;
}
}
return 1;
}
}
Code: 23:02:42 UTC,
java,
verify,
result: Passed
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for (int i=0 ; i<A.length; i++){
if(A[i] > A.length){
return 0;
}
check[A[i]] = true;
}
for (int i=1 ; i<check.length ; i++){
if( check[i] == false ){
return 0;
}
}
return 1;
}
}
Analysis
Code: 23:02:56 UTC,
java,
verify,
result: Passed
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for (int i=0 ; i<A.length; i++){
if(A[i] > A.length){
return 0;
}
check[A[i]] = true;
}
for (int i=1 ; i<check.length ; i++){
if( check[i] == false ){
return 0;
}
}
return 1;
}
}
Analysis
Code: 23:03:00 UTC,
java,
final,
score: 
100
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
boolean check[] = new boolean[A.length+1];
for (int i=0 ; i<A.length; i++){
if(A[i] > A.length){
return 0;
}
check[A[i]] = true;
}
for (int i=1 ; i<check.length ; i++){
if( check[i] == false ){
return 0;
}
}
return 1;
}
}
Analysis summary
The solution obtained perfect score.
Analysis
Detected time complexity:
O(N) or O(N * log(N))
expand all
Correctness tests
1.
0.004 s
OK
2.
0.004 s
OK
1.
0.004 s
OK
2.
0.004 s
OK
1.
0.004 s
OK
2.
0.004 s
OK
3.
0.004 s
OK
4.
0.004 s
OK
1.
0.004 s
OK
2.
0.004 s
OK
3.
0.004 s
OK
4.
0.004 s
OK
1.
0.004 s
OK
2.
0.004 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.008 s
OK
2.
0.008 s
OK
3.
0.004 s
OK
expand all
Performance tests
1.
0.028 s
OK
2.
0.028 s
OK
1.
0.244 s
OK
2.
0.244 s
OK
1.
0.248 s
OK
2.
0.244 s
OK
1.
0.244 s
OK
2.
0.244 s
OK
1.
0.004 s
OK
2.
0.152 s
OK
3.
0.004 s
OK
1.
0.004 s
OK
2.
0.004 s
OK
3.
0.028 s
OK
4.
0.244 s
OK
5.
0.244 s
OK