Tasks Details
medium
Find the smallest positive integer that does not occur in a given sequence.
Task Score
100%
Correctness
100%
Performance
100%
This is a demo task.
Write a function:
class Solution { public int solution(int[] A); }
that, given an array A of N integers, returns the smallest positive integer (greater than 0) that does not occur in A.
For example, given A = [1, 3, 6, 4, 1, 2], the function should return 5.
Given A = [1, 2, 3], the function should return 4.
Given A = [−1, −3], the function should return 1.
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,000,000..1,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 14 minutes
Notes
not defined yet
Code: 10:03:04 UTC,
java,
autosave
Code: 10:03:34 UTC,
java,
autosave
Code: 10:03:59 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) {
Set<Integer> set = new HashSet<>();
for (int n : A) {
set.add(n);
}
}
}
Code: 10:04:29 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) {
Set<Integer> set = new HashSet<>();
for (int n : A) {
set.add(n);
}
int smallest = 1;
for (int n : set) {
if (!set.contains(smallest)) {
return smallest;
}
}
}
}
Code: 10:04:43 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) {
Set<Integer> set = new HashSet<>();
for (int n : A) {
set.add(n);
}
int smallest = 1;
for (int n : set) {
if (!set.contains(smallest)) {
return smallest;
}
smallest = n + 1;
}
return smallest;
}
}
Analysis
Code: 10:05: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) {
Set<Integer> set = new HashSet<>();
for (int n : A) {
set.add(n);
}
int smallest = 1;
for (int n : set) {
if (!set.contains(smallest)) {
return smallest;
}
smallest = n + 1;
}
return smallest;
}
}
Code: 10:05:43 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) {
Set<Integer> set = new HashSet<>();
for (int n : A) {
set.add(n);
}
int smallest = 1;
for (int n : set) {
if (!set.contains(smallest)) {
return smallest;
}
smallest = n + 1;
}
return smallest;
}
}
Analysis
expand all
User tests
1.
0.001 s
RUNTIME ERROR,
invalid input, unexpected token at the end of input: 1
User test case 1:
[] 1, 6, 4, 2, 3, 1 ]
Code: 10:05:57 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) {
Set<Integer> set = new HashSet<>();
for (int n : A) {
set.add(n);
}
int smallest = 1;
for (int n : set) {
if (!set.contains(smallest)) {
return smallest;
}
smallest = n + 1;
}
return smallest;
}
}
Analysis
User test case 1:
[1, 6, 4, 2, 3, 1]
Code: 10:06: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) {
Set<Integer> set = new HashSet<>();
for (int n : A) {
set.add(n);
}
int smallest = 1;
for (int n : set) {
if (!set.contains(smallest)) {
return smallest;
}
smallest = n + 1;
}
return smallest;
}
}
Code: 10:06: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) {
Set<Integer> set = new HashSet<>();
for (int n : A) {
set.add(n);
}
int smallest = 1;
for (int n : set) {
System.out.print
if (!set.contains(smallest)) {
return smallest;
}
smallest = n + 1;
}
return smallest;
}
}
Code: 10:06:34 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) {
Set<Integer> set = new HashSet<>();
for (int n : A) {
set.add(n);
}
int smallest = 1;
for (int n : set) {
System.out.print(n + " ");
if (!set.contains(smallest)) {
return smallest;
}
smallest = n + 1;
}
return smallest;
}
}
Analysis
expand all
Example tests
1.
0.008 s
OK
stdout:
1 2 3 4 6
1.
0.008 s
OK
stdout:
1 2 3
1.
0.008 s
OK
stdout:
-1
User test case 1:
[1, 6, 4, 2, 3, 1]
Code: 10:12:44 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) {
Set<Integer> set = new HashSet<>();
for (int n : A) {
set.add(n);
}
int smallest = 1;
for (int n : set) {
System.out.print(n + " ");
if (!set.contains(smallest)) {
return smallest;
}
smallest = smallest + 1;
}
return smallest;
}
}
Code: 10:13:36 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) {
Set<Integer> set = new HashSet<>();
for (int n : A) {
set.add(n);
}
int smallest = 1;
for (int n : set) {
System.out.print(n + " ");
if (!set.contains(smallest)) {
return smallest;
}
smallest = smallest + 1;
}
return smallest;
}
}
Analysis
expand all
Example tests
1.
0.008 s
OK
stdout:
1 2 3 4 6
1.
0.008 s
OK
stdout:
1 2 3
1.
0.008 s
OK
stdout:
-1
User test case 1:
[1, 6, 4, 2, 3, 1]
Code: 10:14:01 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) {
Set<Integer> set = new HashSet<>();
for (int n : A) {
set.add(n);
}
int smallest = 1;
for (int n : set) {
if (!set.contains(smallest)) {
return smallest;
}
smallest = smallest + 1;
}
return smallest;
}
}
Code: 10:14: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) {
Set<Integer> set = new HashSet<>();
for (int n : A) {
set.add(n);
}
int smallest = 1;
for (int ignored : set) {
if (!set.contains(smallest)) {
return smallest;
}
smallest = smallest + 1;
}
return smallest;
}
}
Code: 10:14:29 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) {
Set<Integer> set = new HashSet<>();
for (int n : A) {
set.add(n);
}
int smallest = 1;
for (int ignored : set) {
if (!set.contains(smallest)) {
return smallest;
}
smallest = smallest + 1;
}
return smallest;
}
}
Code: 10:15:18 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) {
Set<Integer> set = new HashSet<>();
for (int n : A) {
set.add(n);
}
int smallest = 1;
for (int ignored : set) {
if (!set.contains(smallest)) {
return smallest;
}
smallest = smallest + 1;
}
return smallest;
}
}
Analysis
User test case 1:
[1, 6, 4, 2, 3, 1]
Code: 10:16:39 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) {
Set<Integer> set = new HashSet<>();
for (int n : A) {
set.add(n);
}
int smallest = 1;
for (int ignored : set) {
if (!set.contains(smallest)) {
return smallest;
}
smallest = smallest + 1;
}
return smallest;
}
}
Analysis
User test case 1:
[1, 6, 4, 2, 3, 1]
Code: 10:16:47 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) {
Set<Integer> set = new HashSet<>();
for (int n : A) {
set.add(n);
}
int smallest = 1;
for (int ignored : set) {
if (!set.contains(smallest)) {
return smallest;
}
smallest = smallest + 1;
}
return smallest;
}
}
Analysis summary
The solution obtained perfect score.
Analysis
Detected time complexity:
O(N) or O(N * log(N))
expand all
Correctness tests
1.
0.012 s
OK
2.
0.008 s
OK
3.
0.008 s
OK
4.
0.008 s
OK
1.
0.008 s
OK
2.
0.008 s
OK
3.
0.012 s
OK
1.
0.012 s
OK
2.
0.008 s
OK
1.
0.012 s
OK
2.
0.008 s
OK
1.
0.008 s
OK
expand all
Performance tests
1.
0.040 s
OK
2.
0.032 s
OK
3.
0.048 s
OK
1.
0.404 s
OK
1.
0.680 s
OK
2.
0.616 s
OK
1.
0.272 s
OK