def find_disappeared_numbers_set(nums: list[int]) -> list[int]:
    """Returns the integers in the range [1, n] that do not appear in nums.

    Better constants on time than cyclic sort version, but needs extra space

    Complexity:
        n = len(nums)
        Time: O(n)
        Space: O(n)

    Args:
        nums:
            array of n integers where `nums[i]` is in the range [1, n]
            Note: if any number is missing,
            that implies some other number is duplicated

    Examples:
        >>> find_disappeared_numbers_set([4,3,2,7,8,2,3,1])
        [5, 6]
        >>> find_disappeared_numbers_set([1,1])
        [2]

    """
    """ALGORITHM"""
    ## INITIALIZE VARS ##
    n = len(nums)
    distinct_nums = set(nums)
    return [num for num in range(1, n + 1) if num not in distinct_nums]