[leetcode] missingNumber

https://leetcode.com/problems/missing-number/

Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array.

For example,
Given nums = [0, 1, 3] return 2.

 

 

class Solution(object):
    def missingNumber(self, nums):
        # Runtime: 56 ms
        """
        :type nums: List[int]
        :rtype: int
        """
        length = len(nums)
        sum_1 = (length + 1) * length / 2
        sum_2 = sum(nums)
        return sum_1 - sum_2

    def missingNumber_1(self, nums):
        # Runtime: 76 ms
        """
        :type nums: List[int]
        :rtype: int
        """
        if not nums:
            return

        nums.sort()
        end = nums[-1]
        sum_1 = (end + 1) * end / 2
        sum_2 = sum(nums[:end + 1])
        if sum_2 == sum_1:
            if 0 not in nums:
                return 0
            else:
                return end + 1
        return sum_1 - sum_2

    def missingNumber_2(self, nums):
        # Runtime: 104 ms
        """
        :type nums: List[int]
        :rtype: int
        """
        nums.sort()
        a = list(set(range(len(nums))) ^ set(nums))
        return a[0] if a else nums[-1] + 1

    def missingNumber_3(self, nums):
        # Runtime: 72 ms
        """
        :type nums: List[int]
        :rtype: int
        """
        import operator
        return reduce(operator.xor, nums, reduce(operator.xor, xrange(len(nums) + 1)))

print Solution().missingNumber([])
print Solution().missingNumber([0])
print Solution().missingNumber([0, 1])
print Solution().missingNumber([1, 2])
print Solution().missingNumber([0, 1, 3])
print Solution().missingNumber([0, 2, 3])


print Solution().missingNumber([])
print Solution().missingNumber([0])
print Solution().missingNumber([0, 1])
print Solution().missingNumber([1, 2])
print Solution().missingNumber([0, 1, 3])
print Solution().missingNumber([0, 2, 3])

 

posted @ 2015-11-17 20:54  blue_whale  阅读(119)  评论(0)    收藏  举报