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

思路1

等差数列前n项和 - 数组之和

思路2

这里需要注意的是,input的数组不一定的sorted的,并且是从0-n这n+1个数字中选出n个.所以这里n == len(nums), 记住下面的办法就行。类似的题目还有,只有一个数出现一次,其余都出现两次,也可以用xor来找出那个数

对于no missing array, [0,1,2,3]对应于index也是[0,1,2,3]. 所以value与index对应位置xor得到的结果肯定是0.

但如果不相同的话,例如[0,1,3]对应的index是[0,1,2], 那么对应位置value与index对应位置xor之后,得到的数值再xor len(nums), e.g. 3 就可以得到最后的missing number

是对index,和数,而且要先数后index。最后弄len(num)这个index

class Solution(object):
    def missingNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        miss = nums[0] ^ 0;
        for i in xrange(1, len(nums)):
            miss ^= nums[i]
            miss ^= i
        miss = miss ^ len(nums)
        return miss