Given a sequence of integers as an array,i have to 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

We can remove `3`

from the array to get the strictly increasing sequence `[1, 2]`

. Alternately, we can remove `2`

to get the strictly increasing sequence `[1, 3].`

The function must return `true`

if it is possible to remove one element from the array in order to get a strictly increasing sequence, otherwise return `false.`

Here is what i have already tried , but it doesnt work for all situations

function almostIncreasingSequence(sequence) { for (var i = 0; i < sequence.length; i++) { if (sequence[i] > sequence[i + 1]) { sequence.splice(i, 1); return true; }; return false; }; }

## Answer

Here is my answer

function almostIncreasingSequence(sequence) { if (isIncreasingSequence(sequence)) { return true; } for (var i = 0; i < sequence.length > 0; i++) { var tmpSequence = sequence.slice(0); // copy original array tmpSequence.splice(i, 1); if (isIncreasingSequence(tmpSequence)) { return true; } } return false; } function isIncreasingSequence(sequence) { for (var i = 0; i < sequence.length - 1; i++) { if (sequence[i] >= sequence[i + 1]) { return false; } } return true; } almostIncreasingSequence([1, 3, 2, 1]); // false almostIncreasingSequence([1, 3, 2]); // true