Соседи одного знака
Проверяем соседние пары слева направо и останавливаемся на первой подходящей.
Как к ней подойти
Потренируйтесь хранить последовательность значений и обращаться к нужным элементам списка.
Список хранит элементы в определённом порядке. Прежде чем менять его, решите, нужны ли исходные индексы и можно ли пройти по данным один раз. При удалении элементов будьте внимательны: индексы сдвигаются.
Произведение строго положительно тогда и только тогда, когда оба числа ненулевые и имеют одинаковый знак.
Проверьте перед запуском
- Ноль не является ни положительным, ни отрицательным.
- После первой пары нужен break.
Сравните свой подход
Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.
Ваше принятое решение
Рекомендуемое решение: Сравнение произведения
Произведение строго положительно тогда и только тогда, когда оба числа ненулевые и имеют одинаковый знак.
a = list(map(int, input().split()))
for i in range(len(a) - 1):
if a[i] * a[i + 1] > 0:
print(a[i], a[i + 1])
break
Время: O(n). Память: O(n), включая входные данные.
Другой способ: Поток соседних значений
Храним предыдущий элемент и сравниваем знаки без умножения. split всё равно хранит слова входной строки.
values = map(int, input().split())
previous = next(values, None)
for current in values:
if (previous > 0 and current > 0) or (previous < 0 and current < 0):
print(previous, current)
break
previous = current
Время: O(n). Память: O(n) для разбитой входной строки; O(1) числовых переменных.