Больше своих соседей
Вы решили задачу. Теперь можно сравнить подходы.
Рассматриваем только внутренние элементы списка.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Сравнение по индексам
У каждого кандидата есть левый и правый сосед.
a = list(map(int, input().split()))
count = 0
for i in range(1, len(a) - 1):
if a[i] > a[i - 1] and a[i] > a[i + 1]:
count += 1
print(count)
Время: O(n). Память: O(n).
Другой способ: Скользящее окно
Вместо индексов переносим окно из трёх соседних чисел. split хранит токены ввода.
a = iter(map(int, input().split()))
left = next(a, None)
center = next(a, None)
count = 0
for right in a:
if left < center > right:
count += 1
left, center = center, right
print(count)
Время: O(n). Память: O(n) из-за split; окно O(1).
На что обратить внимание
- Сравнение строгое: равный сосед не подходит.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.