Поиск индекса элемента с максимальным абсолютным значением

Найдите максимум среди индексов, используя 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). Возвращается именно позиция в исходном списке, не само значение и не позиция после сортировки. Правило выбора первого при равенстве делает результат определённым.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее