Найдите максимум среди индексов, используя abs(nums[index]) как ключ. При одинаковом модуле вернётся первый подходящий индекс; для указанного непустого списка это однопроходный поиск.
Поиск индекса элемента с максимальным абсолютным значением
Найдите максимум среди индексов, используя abs(nums[index]) как ключ. При одинаковом модуле вернётся первый подходящий индекс; для указанного непустого списка это однопроходный поиск.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Создайте функцию max_abs_index(), принимающую один параметр: • nums — непустой массив целых чисел (размер массива ≤ 10³). Функция должна вернуть позицию (индекс) элемента массива nums, у которого наибольшее абсолютное значение.
Пример 1: Ввод: print(max_abs_index([1, 2, 10, -100, 0, -45, 99])) Вывод: 3
Пример 2: Ввод: print(max_abs_index([1, 2, 10, 100, 0, 78, 1000])) Вывод: 6
Ответ
Найдите максимум среди индексов, используя abs(nums[index]) как ключ. При одинаковом модуле вернётся первый подходящий индекс; для указанного непустого списка это однопроходный поиск.
Краткое решение:
def max_abs_index(nums):
if not nums:
raise ValueError('Expected non-empty list')
return max(range(len(nums)), key=lambda index: abs(nums[index]))
Первый пример вернёт 3 из-за -100, второй — 6 из-за 1000. Время O(n), дополнительная память O(1). Возвращается именно позиция в исходном списке, не само значение и не позиция после сортировки. Правило выбора первого при равенстве делает результат определённым.