У вас есть набор целых чисел s
, изначально содержащий все числа от 1
до n
. К сожалению, из-за какой-то ошибки один из номеров в s
был продублирован другим номером в наборе, что привело к повторению одного номера и потере другого номера.
Вам дан целочисленный массив nums
, представляющий состояние данных этого набора после ошибки.
Найдите число, которое встречается дважды, и число, которое отсутствует, и верните их в виде массива.
Пример 1:
Input: nums = [1,2,2,4] Output: [2,3]
Пример 2:
Input: nums = [1,1] Output: [1,2]
Ограничения:
2 <= nums.length <= 104
1 <= nums[i] <= 104
Решения:
Питон:
class Solution(object): def findErrorNums(self, nums): nums.sort() duplicate = -1 missing = -1 if nums[0] != 1: missing = 1 for i in range(1, len(nums)): if nums[i] - nums[i-1] > 1: missing = nums[i-1] + 1 elif nums[i] - nums[i-1] == 0: duplicate = nums[i] if missing == -1: missing = nums[-1] + 1 return [duplicate, missing]
c#:
public class Solution { public int[] FindErrorNums(int[] nums) { Array.Sort(nums); int duplicate = -1; int missing = -1; if (nums[0] != 1) { missing = 1; } for (int i = 1; i < nums.Length; i++) { if (nums[i] - nums[i-1] > 1) { missing = nums[i-1] + 1; } else if (nums[i] - nums[i-1] == 0) { duplicate = nums[i]; } } if (missing == -1) { missing = nums[nums.Length - 1] + 1; } return new int[] { duplicate, missing }; } }
Ява
class Solution { public int[] findErrorNums(int[] nums) { Arrays.sort(nums); int duplicate = -1; int missing = -1; if (nums[0] != 1) { missing = 1; } for (int i = 1; i < nums.length; i++) { if (nums[i] - nums[i-1] > 1) { missing = nums[i-1] + 1; } else if (nums[i] - nums[i-1] == 0) { duplicate = nums[i]; } } if (missing == -1) { missing = nums[nums.length - 1] + 1; } return new int[] { duplicate, missing }; } }
JavaScript
/** * @param {number[]} nums * @return {number[]} */ var findErrorNums = function(nums) { nums.sort((a, b) => a - b); let duplicate = -1; let missing = -1; if (nums[0] !== 1) { missing = 1; } for (let i = 1; i < nums.length; i++) { if (nums[i] - nums[i-1] > 1) { missing = nums[i-1] + 1; } else if (nums[i] - nums[i-1] === 0) { duplicate = nums[i]; } } if (missing === -1) { missing = nums[nums.length - 1] + 1; } return [duplicate, missing]; };
Типографический текст
function findErrorNums(nums: number[]): number[] { nums.sort((a, b) => a - b); let duplicate = -1; let missing = -1; if (nums[0] !== 1) { missing = 1; } for (let i = 1; i < nums.length; i++) { if (nums[i] - nums[i-1] > 1) { missing = nums[i-1] + 1; } else if (nums[i] - nums[i-1] === 0) { duplicate = nums[i]; } } if (missing === -1) { missing = nums[nums.length - 1] + 1; } return [duplicate, missing]; };
PHP
class Solution { /** * @param Integer[] $nums * @return Integer[] */ function findErrorNums($nums) { sort($nums); $duplicate = -1; $missing = -1; if ($nums[0] !== 1) { $missing = 1; } for ($i = 1; $i < count($nums); $i++) { if ($nums[$i] - $nums[$i-1] > 1) { $missing = $nums[$i-1] + 1; } else if ($nums[$i] - $nums[$i-1] === 0) { $duplicate = $nums[$i]; } } if ($missing === -1) { $missing = $nums[count($nums) - 1] + 1; } return [$duplicate, $missing]; } }
Надеюсь, это поможет! Дайте знать, если у вас появятся вопросы. Не забудьте подписаться, похлопать и оставить комментарий