Есть задача
let arr` - массив чисел от 1 до N, в котором одно число выкинули, а остальной массив перемешали.
Требуется написать функцию, которая принимает на вход массив arr и возвращает удаленное число.
Решение должно быть линейным, не должно модифицировать исходный массив и использовать дополнительную память объем которой зависит от размера входного массива.
Я не совсем понял суть вопроса. Как и чем выкинули, и что понимать под возвратить элемент. Может подскажете))
Плохо быть "разработчиком", не шарящим в математике...
function getMissedElement(arr) {
let max = Math.max.apply(null, arr);
let total = max*(max+1)/2;
let sum = arr.reduce((a, b) => a + b, 0);
console.log(total - sum);
}
let arr = [4, 2, 5, 1, 3, 7];
Одиночка Айс, ничего страшного, бывает=)
p.s. кстати, твое решение не верное, проблема в max = Math.max.apply(null, arr). Подумай что будет, если удалить последний элемент исходного массива.
Одиночка Айс, нет, если исходный массив был к примеру [1, 2, 3, 4, 5] и из него удалили 5, то max() вернет 4, а тебе нужно 5. К тому же max сделает лишний проход по массиву.