一個長度爲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;
};