Какие два числа в заданном списке имеют наибольшее абсолютное произведение? Выведите эти числа в порядке неубывания
Какие два числа в заданном списке имеют наибольшее абсолютное произведение? Выведите эти числа в порядке неубывания. Решите задачу за O(n) время, где n - размер списка. Запрещено использовать сортировку.
Пример:
Входные данные: 4 3 5 2 5
Вывод: 5 5
10.12.2023 21:44
Разъяснение: Чтобы решить эту задачу за время O(n), мы пройдемся по списку один раз и будем отслеживать два наибольших числа.
1. Изначально зададим переменные "max1" и "max2" значениями из списка. Это гарантирует, что мы начнем с двух наибольших чисел.
2. Затем выполним проход по списку чисел, начиная с третьего числа. Для каждого числа выполним следующие действия:
- Если текущее число больше или равно "max1", обновим значения "max2" и "max1".
- Если текущее число между "max1" и "max2", обновим только значение "max2".
- Если текущее число меньше "max2", ничего не меняем.
3. По окончании прохода по списку, "max1" и "max2" будут содержать два числа с наибольшим абсолютным произведением.
4. Выведем эти числа в порядке неубывания.
Пример использования:
Входные данные: 4 3 5 2 5
Шаги решения:
- max1 = 4, max2 = 3
- 5 >= 4, обновляем max2 = 4, max1 = 5
- 2 между 4 и 5, обновляем только max2 = 2
- 5 между 2 и 4, обновляем только max2 = 5
Вывод: 5 5
Совет: При решении этой задачи важно внимательно читать условие и следовать указанным ограничениям. Кроме того, помните о том, что абсолютное значение числа - это его значение без знака. Используйте переменные для отслеживания наибольших чисел и обновляйте их при необходимости. Оценивайте сложность вашего решения и старайтесь найти оптимальный алгоритм с наименьшей сложностью.
Задание: Какие два числа из списка {10, -2, 15, -4, 6} имеют наибольшее абсолютное произведение? Выведите эти числа в порядке неубывания.