Сложность: easy
У вас есть набор целых чисел s, который изначально содержит все числа от 1 до n. К сожалению, из-за какой-то ошибки одно из чисел в s продублировалось в другое число в наборе, что привело к повторению одного числа и потере другого. Вам дан целочисленный массив nums, представляющий состояние данных в этом наборе после ошибки. Найдите число, которое встречается дважды, и число, которое отсутствует, и верните их в виде массива.
Пример:
Input: nums = [1,2,2,4]
Output: [2,3]
👨💻 Алгоритм:
1⃣Пройдите по массиву, используя набор для отслеживания чисел, чтобы определить дублированное число.
2⃣Определите отсутствующее число, используя сумму чисел от 1 до n и текущую сумму массива.
3⃣Верните дублированное и отсутствующее числа в виде массива.
😎 Решение:
var findErrorNums = function(nums) {
let numSet = new Set();
let duplicate = -1;
const n = nums.length;
for (let num of nums) {
if (numSet.has(num)) {
duplicate = num;
}
numSet.add(num);
}
let missing = (n * (n + 1)) / 2 - [...numSet].reduce((a, b) => a + b, 0);
return [duplicate, missing];
};Ставь 👍 и забирай 📚 Базу знаний