Получить строго возрастающую последовательность PythonPython

Программы на Python
Ответить
Anonymous
 Получить строго возрастающую последовательность Python

Сообщение Anonymous »


Вопрос:

"Дана последовательность целых чисел в виде массива. Определите, можно ли получить строго возрастающую последовательность, удалив из массива не более одного элемента.

Примечание: последовательность a0, a1, ..., an считается строго возрастающей, если a0 < a1 < ... < an. Последовательность, содержащая только один элемент, также считается строго возрастающей.

Примеры:
[*]
Для последовательности = [1, 3, 2, 1] вывод должен быть решение (последовательность) = ложь. В этом массиве нет ни одного элемента, который можно было бы удалить, чтобы получить строго возрастающую последовательность.
[*]
Для последовательности = [1, 3, 2] вывод должен быть решение (последовательность) = правда. Вы можете удалить 3 из массива, чтобы получить строго возрастающую последовательность [1, 2]. Альтернативно, вы можете удалить 2, чтобы получить строго возрастающую последовательность [1, 3]."

Вот мой код:

def решение (последовательность): если len(последовательность) == 1: вернуть истину еще: количество = 0 для i в диапазоне (0,len(последовательность) - 1): если последовательность >= последовательность[i + 1]: счет = счет + 1 для i в диапазоне (0,len(последовательность) - 2): если последовательность >= последовательность[i + 2]: счет = счет + 1 счетчик возврата 1). Я уловил это в первом операторе if.

Случай 3: Однако в некоторых случаях существует только один шаг вниз, но удалить хотя бы один элемент по-прежнему невозможно. Это происходит, когда второй элемент также меньше рассматриваемого элемента. Например, для [1,4,3,2] даже если вы уберете 3, вы все равно получите понижение. Теперь я рассмотрел этот случай, выполнив вторую проверку, которая проверяла, меньше ли второй элемент, и если да, то мы добавляем к счетчику.

Случай 4: есть случай, который мой код не охватывает, и он кажется единственным: когда сосед элемента и следующий элемент меньше рассматриваемого элемента, но мы могли бы решить проблему, просто избавившись от рассматриваемого элемента. Итак, с [1,4,2,3] и 2, и 3 меньше 4, но если мы просто избавились от 4, то все в порядке. Этот случай может произойти либо тогда, когда проблемный элемент является первым в последовательности, либо нет. Я не уверен, как правильно это запечатлеть. Я полагаю, вы могли бы добавить условие, которое проверяло бы, меньше ли i-2, чем i+1, но это не сработает, когда я индексирую первый элемент, и это довольно громоздко. Я не знаю, как с этим разобраться.

Я совершенно уверен, что я слишком усложнил ситуацию, и что действительно нужно, так это сделать шаг назад и подумать о менее фрагментарном решении, но я застрял. Может ли кто-нибудь помочь? Обратите внимание, что нам не обязательно фактически получать строго возрастающую последовательность; нам просто нужно посмотреть, сможем ли мы это сделать.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»