Created
October 18, 2017 11:15
-
-
Save ienugr/151cbadaaf05b24d34bf7caa9d394aa0 to your computer and use it in GitHub Desktop.
Codility Demo Test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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