Set Mismatch
可以利用桶排序来做,额外空间复杂度是O(n),这里只讨论之前看到过的一种记重复数的方法,O(1)空间,不过需要改变数组
class Solution(object):
def findErrorNums(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
n = len(nums)
for i in xrange(n):
nums[(nums[i] - 1) % (n + 1)] += (n + 1)
dup, mis = None, None
for i in xrange(n):
if nums[i] / (n + 1) > 1:
dup = i + 1
elif nums[i] < n + 1:
mis = i + 1
return [dup, mis]