У вас есть набор целых чисел 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];
    }
}

Надеюсь, это поможет! Дайте знать, если у вас появятся вопросы. Не забудьте подписаться, похлопать и оставить комментарий