Квадрат элементов отсортированного массива

Если требуется сохранить позиции исходных элементов, достаточно одного map с возведением в квадрат. Сортировка результата не гарантируется при наличии отрицательных чисел.

Короткий ответ

Что ответить на собеседовании

Если требуется сохранить позиции исходных элементов, достаточно одного map с возведением в квадрат. Сортировка результата не гарантируется при наличии отрицательных чисел.

Подробный разбор

Ответ с пояснениями

Условие

Имеется массив целых чисел, уже отсортированный по возрастанию. Необходимо за один проход преобразовать каждый элемент, возведя его в квадрат, при этом сохранить исходный порядок элементов в массиве.

Ответ

Если требуется сохранить позиции исходных элементов, достаточно одного map с возведением в квадрат. Сортировка результата не гарантируется при наличии отрицательных чисел.

function squareElements(numbers) {
  return numbers.map(value => value * value);
}
squareElements([-3, -1, 2]); // [9, 1, 4]

Это точно сохраняет соответствие индексов и выполняется за O(n). Требование «квадраты тоже отсортированы» было бы другой задачей: для неё используют два указателя по краям и заполняют результат с конца. Одновременно сохранить исходный порядок и возрастающий порядок квадратов в общем случае невозможно. Числа должны оставаться в нужном диапазоне точности.

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

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

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

Подробнее