• 首先是我自己乱写的,弱智写法:排序然后不断+1找到没有的那个

    /**
     * @param {number[]} nums
     * @return {number}
     */
    var missingNumber = function(nums) {
        if(nums.length == 1 && nums[0] == 0) return 1
        if(nums.length == 1) return 0
        nums.sort(function(a,b) { return a-b})
        if (nums[0] != 0) return 0
        for( let i =0; i < nums.length ; i++) {
            if(nums.includes(nums[i]+1) === false) {
                console.log(nums[i]+1)
                return nums[i]+1
            }
        }
    };

    第二种方法是我看了解析知道的,可以把0…数组长度+1求和减去原本数组的和,就是缺的这个数字了,效率快很多

    /**
     * @param {number[]} nums
     * @return {number}
     */
    var missingNumber = function(nums) {
        let sum = 0
        for(let i = 0; i <nums.length; i++) {
            sum += nums[i]
        }
        return nums.length * (nums.length+1)/2 -sum
    };

    第三种办法是个骚操作了,异或运算,我也没整明白

    /**
     * @param {number[]} nums
     * @return {number}
     */
    var missingNumber = function(nums) {
        let res = nums.length
        for(let i = 0; i <nums.length; ++i) {
            res ^= nums[i]
            res ^= i
        }
        return res
    };