LEETCODE | PYTHON | 645 | 错误的集合
1. 题目
集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。
给定一个数组 nums 代表了集合 S 发生错误后的结果。
请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/set-mismatch
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 代码
class Solution:
def findErrorNums(self, nums: List[int]) -> List[int]:
#排序
nums.sort()
#计算length
l = len(nums)
#初始化重复值与缺失值
repetition = 0
loss = 0
#遍历找到重复值
for i in range(1,l):
if nums[i] == nums[i-1]:
repetition = nums[i]
#计算正确的和
S = (1+l)*l//2
#计算缺失值
loss = S - sum(nums) + repetition
return [repetition,loss]
3. 思路
(1) 对nums进行sort
(2) 遍历找到重复值
(3) 计算正确的和
(4) 缺失值 = 正确的和 - nums的和 + 重复值