Day43: 错误的集合

Day43: 错误的集合

上一天作业详细分析:Day42:判断数组能切分为几份?

集合 S 包含从1到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。

给定一个数组 nums 代表了集合 S 发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。

补全下面代码

class Solution(object):

# def findErrorNums(self, nums):
    # """
    # :type nums: List[int]
    # :rtype: List[int]
    # """

示例 1:

输入: nums = [1,2,2,4]

输出: [2,3]

注意:

给定数组的长度范围是 [2, 10000]。

给定的数组是无序的。

来源:力扣(LeetCode)

链接:力扣

https://leetcode-cn.com/problems/set-mismatch

class Solution(object):
def findErrorNums(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
res = []
for i in range(len(nums)):
key = abs(nums[i]) -1
if nums[key] <0:
res.append(key+1)
else:
nums[key] = -nums[key]

    for index,i  in enumerate(nums):
        if i > 0:
            res.append(index+1)
    return res

def test_solution():
s = Solution()
nums = [1,2,2,4]
assert s.findErrorNums(nums) == [2,3]

你可能感兴趣的:(Day43: 错误的集合)