Skip to content

Find Disappeared Numbers

andyaganrun edited this page Jul 9, 2017 · 1 revision

Given an array of integers where 1 ? a[i] ? n (n = size of array), some elements appear twice and others appear once. Find all the elements of [1, n] inclusive that do not appear in this array. Could you do it without extra space and in O(n) runtime? You may assume the returned list does not count as extra space.

Example: Input: [4,3,2,7,8,2,3,1]

Output: [5,6]

解法1:

class Solution(object):
    def findDisappearedNumbers(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        if len(nums)==0:
            return []
        
        result=[]
        for x in range(1,len(nums)+1):
            if x not in nums:
                result.append(x)
        return result

虽然可以正确执行,但是大数据量时耗时多

解法2:

class Solution(object):
    def findDisappearedNumbers(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        return list(set(range(1, len(nums)+1)) - set(nums))

Clone this wiki locally