剑指 Offer 53 - II. 0~n-1中缺失的数字

110 阅读1分钟

剑指 Offer 53 - II. 0~n-1中缺失的数字

nums.length === 1 && nums[0] === 1 如果传入的是[1] 则返回0, 如果传入的是[0],则返回的是1

for循环遍历,找到满足 0~n-1 其中缺少一项的情况,如果相邻两项差值大于1,说明中间有断层,返回中间值即可

排除上面情况,剩下只有,最前面和最后面缺值了,且长度大于1,这里做个简单判断,如果第一项有0说明是最后缺一项,如果第一项没有0,直接返回0即可

var missingNumber = function(nums) {
    if(nums.length === 1 && nums[0] === 1){
        return 0
    }
    if(nums.length === 1 && nums[0] === 0){
        return 1
    }
    var len = nums.length
    for(var i=0;i<len;i++){
        if(nums[i+1] && nums[i+1] - nums[i] > 1){
            return nums[i] + 1
        }
    }
    if(nums[0] == 0){
        return nums[len-1] + 1
    }else{
        return 0
    }

};