I am trying to solve this problem on CodeFights, but it will not work. My best solution was 25/26 (time limit exceeded in the last test), but I deleted it because I tried it yesterday (it was O (n ^ 2)). Now I tried a new one in O (n). I am very tired and I really want to do it today, so please help me.
Here are the instructions: Given a sequence of integers in the form of an array, determine whether it is possible to obtain a strictly increasing sequence by removing at most 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].
And here is my code so far ... (bad code):
#include <iostream>
#include <vector>
#include <algorithm>
bool almostIncreasingSequence(std::vector<int> sequence)
{
int count = 0;
for(int i = 0; i < sequence.size()-1; i++)
{
if(sequence[i] > sequence[i+1])
{
count++;
sequence.erase(sequence.begin(), sequence.begin() + i);
i--;
}
if(count == 2)
return false;
}
return true;
}
int main()
{
std::cout << std::endl;
return 0;
}
source
share