【劍指 Offer 53 - II】0~n-1中缺失的數字

一個長度爲n-1的遞增排序數組中的所有數字都是唯一的,並且每個數字都在範圍0~n-1之內。在範圍0~n-1內的n個數字中有且只有一個數字不在該數組中,請找出這個數字。

示例 1:

輸入: [0,1,3]
輸出: 2

示例 2:

輸入: [0,1,2,3,4,5,6,7,9]
輸出: 8

限制:
1 <= 數組長度 <= 10000

思路:
看到是遞增數組且數字唯一,那就是有序數組,有序數組二分法來找nums[i]!==i的值就可以

const missingNumber = (nums: number[]): number => {
   let left: number = 0, 
     right: number = nums.length;
    while(left < right) {
        let mid: number = (left + right) >> 1;
        if(nums[mid] <= mid){
            left = mid+1;
        }else{
            right = mid;
        }
    }
    return left;
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章