262просмотров
7.8%от подписчиков
22 марта 2026 г.
statsScore: 288
Задача: 645. Set Mismatch
Сложность: easy У вас есть набор целых чисел s, который изначально содержит все числа от 1 до n. К сожалению, из-за какой-то ошибки одно из чисел в s продублировалось в другое число в наборе, что привело к повторению одного числа и потере другого. Вам дан целочисленный массив nums, представляющий состояние данных в этом наборе после ошибки. Найдите число, которое встречается дважды, и число, которое отсутствует, и верните их в виде массива. Пример:
Input: nums = [1,2,2,4]
Output: [2,3] 👨💻 Алгоритм: 1⃣Пройдите по массиву, используя набор для отслеживания чисел, чтобы определить дублированное число. 2⃣Определите отсутствующее число, используя сумму чисел от 1 до n и текущую сумму массива. 3⃣Верните дублированное и отсутствующее числа в виде массива. 😎 Решение:
public class Solution { public int[] FindErrorNums(int[] nums) { int n = nums.Length; HashSet<int> numSet = new HashSet<int>(); int duplicate = -1; foreach (int num in nums) { if (!numSet.Add(num)) { duplicate = num; } } int missing = (n * (n + 1)) / 2 - numSet.Sum(); return new int[] { duplicate, missing }; }
} Ставь 👍 и забирай 📚 Базу знаний