164-268. 丢失的数字

给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。(第一个和第三个我写的,群众的眼睛是光亮的)
class Solution(object):
    def missingNumber1(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        max_value = len(nums)
        new_list = [i for i in range(max_value+1)]
        return (set(new_list) - set(nums)).pop()

    def missingNumber2(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """

        disappear_num = len(nums) * (len(nums)+1) // 2 - sum(nums)
        return disappear_num

    def missingNumber(self, nums):
        """突发灵感想到了这个
        :type nums: List[int]
        :rtype: int
        """
        c = 0
        k = 0
        for i in nums:
            c ^= i
            c ^= k
            k += 1
        c ^= len(nums)
        return c


if __name__ == '__main__':
    nums = [9, 6, 4, 2, 3, 5, 7, 0, 1]
    s1 = Solution()
    root = s1.missingNumber(nums)
    print(root)
posted @ 2021-02-01 11:32  楠海  阅读(48)  评论(0编辑  收藏  举报