Ответ можно написать и на javascript.
Учитывая последовательность целых чисел в виде массива, определите, можно ли получить строго возрастающую последовательность, удалив из массива не более одного элемента.
К примеру:
Для
$sequence = [1, 3, 2, 1]вывод должен бытьalmostIncreasingSequence(sequence) = false;Для
$sequence = [1, 3, 2]вывод должен бытьalmostIncreasingSequence(sequence) = true;
Вы можете удалить 3 из массива, чтобы получить строго возрастающую последовательность [1, 2]. В качестве альтернативы вы можете удалить 2, чтобы получить строго возрастающую последовательность [1, 3].
Для
$sequence = [1, 2, 3, 4, 5, 6]вывод должен бытьalmostIncreasingSequence(sequence) = true;
Возвращает true, если можно удалить один элемент из массива, чтобы получить строго возрастающую последовательность, иначе верните значение false.
Пытаюсь решить следующим путем:
function almostIncreasingSequence($sequence) {
$r = 0;
for ($i = 0, $prev = -1, $cnt = count($sequence)-2; $i < $cnt; $i ++)
{
if(!isset($sequence[$i]))
continue;
if ($sequence[$i] >= $sequence[$i+1])
{
$r ++;
$i = $prev;
unset($sequence[$i+1]);
}
}
return $r < 1;
}
var_dump(almostIncreasingSequence([1, 2, 3])); //true
var_dump(almostIncreasingSequence([1, 3, 2, 1])); //Должен быть false, вместо этого получаю бесконечный цикл
Внимание вопрос: Как правильно решить эту задачу ?