Size: a a a

JavaScript.Ninja

2021 November 17

OJ

Oleg Junior in JavaScript.Ninja
а вон ты какой. наоборот мудрый оказывается )
источник

АМ

Андрей Маргиев... in JavaScript.Ninja
Я бы так сделал
Пробегаешься по массиву, отнимаешь от каждого числа свой someNumber, получаешь новый массив с числами. Ищешь среди него минимальное по модулю, запоминаешь его индекс, общим ответом будет число из исходного массива по этому индексу
источник

OJ

Oleg Junior in JavaScript.Ninja
прикольно, только много операций что-то 😊
источник

АМ

Андрей Маргиев... in JavaScript.Ninja
в условиях бизнеса "фича нужна вчера" норм решение
источник

АМ

Андрей Маргиев... in JavaScript.Ninja
особенно если массив небольшой входной
источник

OJ

Oleg Junior in JavaScript.Ninja
про вчера ты точно подметил
источник

АМ

Андрей Маргиев... in JavaScript.Ninja
Можно еще попробовать отсортировать массив и алгоритмом бинарного поиска найти свое число. Если оно найдется - то окей, а если нет, то заберешь таким образом последнее доступное число
источник

АМ

Андрей Маргиев... in JavaScript.Ninja
Либо по моему прошлому алгоритму сделаешь, но уже из массива из двух чисел - последнего который получится при бинарном поиске
источник

OJ

Oleg Junior in JavaScript.Ninja
массив отсортирован. а биаунарные поиски я не знаю
источник

IK

Illya Klymov in JavaScript.Ninja
можно просто один раз пройтись по массиву и найти число. Одним reduce
источник

АМ

Андрей Маргиев... in JavaScript.Ninja
в книге Гроккаем Алгоритмы написан самым первым, можешь посмотреть, или где-то еще загуглить, он довольно простой в понимании и реализации
источник

АМ

Андрей Маргиев... in JavaScript.Ninja
Как будто ты ищешь имя в телефонной книжке
источник

АМ

Андрей Маргиев... in JavaScript.Ninja
То есть отсекаешь все точно неверные варианты
источник

OJ

Oleg Junior in JavaScript.Ninja
ммм. а типо хранить предыдущее в acc? как-то так я понял
источник

АМ

Андрей Маргиев... in JavaScript.Ninja
таким же образом работает и бинарный поиск, смотрит твое число больше или меньше того, что стоит посередине массива? Если больше, то первая половина массива отсекается
источник

АМ

Андрей Маргиев... in JavaScript.Ninja
Илья наверное имеет ввиду, что минимальное по модулю число хранить в acc
источник

АМ

Андрей Маргиев... in JavaScript.Ninja
типа ты от элемента отнимаешь someNumber и ищешь модуль получившегося числа. Если оно меньше acc, то запиши его в acc, а иначе дуй дальше
источник

АМ

Андрей Маргиев... in JavaScript.Ninja
array.reduce((acc, item) => Math.abs(someNumber - item) < acc ? Math.abs(someNumber - item) : acc, 0))
источник

АМ

Андрей Маргиев... in JavaScript.Ninja
что-то типа такого получится
источник

АМ

Андрей Маргиев... in JavaScript.Ninja
только изначальный acc не 0 будет явно, моя ошибка
источник