Created
May 29, 2017 18:33
-
-
Save alejandrolechuga/1f286cc9f34054298b1f0a5c8ea86b70 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
/** | |
Given a sequence of integers as an array, determine whether it is possible to obtain a strictly increasing sequence by removing no more than one element from the array. | |
Example | |
For sequence = [1, 3, 2, 1], the output should be | |
almostIncreasingSequence(sequence) = false; | |
There is no one element in this array that can be removed in order to get a strictly increasing sequence. | |
For sequence = [1, 3, 2], the output should be | |
almostIncreasingSequence(sequence) = true. | |
You can remove 3 from the array to get the strictly increasing sequence [1, 2]. Alternately, you can remove 2 to get the strictly increasing sequence [1, 3]. | |
Input/Output | |
[time limit] 4000ms (js) | |
[input] array.integer sequence | |
Guaranteed constraints: | |
2 ≤ sequence.length ≤ 105, | |
-105 ≤ sequence[i] ≤ 105. | |
[output] boolean | |
Return true if it is possible to remove one element from the array in order to get a strictly increasing sequence, otherwise return false. | |
*/ | |
function almostIncreasingSequence(s) { | |
var length = s.length; | |
var occurrence = 0; | |
var marked = s.slice(0).fill(1); | |
for (var i = 1; i < length; i ++) { | |
for (var j = 0; j < i ; j++) { | |
if (s[j] < s[i]) { | |
marked[i] = Math.max(marked[i], marked[j]+1); | |
} | |
} | |
} | |
max = s.length - Math.max.apply(null, marked); | |
return max <= 1; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment