Skip to content

Instantly share code, notes, and snippets.

@ienugr
Created October 18, 2017 11:15
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ienugr/151cbadaaf05b24d34bf7caa9d394aa0 to your computer and use it in GitHub Desktop.
Save ienugr/151cbadaaf05b24d34bf7caa9d394aa0 to your computer and use it in GitHub Desktop.
Codility Demo Test
// Task description
// This is a demo task.
// Write a function:
// function solution(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.
// Assume that:
// 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].
// Complexity:
// expected worst-case time complexity is O(N);
// expected worst-case space complexity is O(N), beyond input storage (not counting the storage required for input arguments).
// Elements of input arrays can be modified.
var result;
function getAnswer(A, min, max) {
if (min < 0) {
if (max < 0) {
return 1;
} else {
result = 1;
if (A.indexOf(result) > -1) {
return getAnswer(A, result + 1, max);
} else {
return result;
}
}
} else {
result = min;
if (A.indexOf(result) > -1) {
return getAnswer(A, min + 1, max);
} else {
return result;
}
}
}
function solution(A) {
// write your code in JavaScript (Node.js 6.4.0)
var min, max = 0;
min = Math.min.apply(null, A);
max = Math.max.apply(null, A);
return getAnswer(A, min, max)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment