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]

results matching ""

    No results matching ""