题目链接
题目 【简单】
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围 0 - n-1 之内。在范围 0 - n-1 内的n个数字有且只有一个数字不在该数组中,请找出这个数字。
示例
示例 1:
输入: nums = [0,1,2,3,5]
输出: 4
示例 2:
输入: nums = [0, 1, 2, 3, 4, 5, 6, 8]
输出: 7
题解
二分查找
- 时间复杂度 O(logN): 二分法为对数级别复杂度。
- 空间复杂度 O(1): 几个变量使用常数大小的额外空间。
/**
* @param {number[]} nums
* @return {number}
*/
var takeAttendance = function(nums) {
let i = 0, j = nums.length - 1;
while(i <= j) {
let m = Math.floor((i + j) / 2);
if(nums[m] == m) i = m + 1;
else j = m - 1;
}
return i;
};