剑指Offer——II.0~n-1中缺失的数字(JS实现)
原创
©著作权归作者所有:来自51CTO博客作者wb59770b05237ae的原创作品,请联系作者获取转载授权,否则将追究法律责任
题目描述
解题思路
- 本题采用的二分的思想
- 本题关键是使用二分查找找出中位数的下标和元素值的关系
解题代码
var missingNumber = function(nums) {
// !本题采用二分法的思想
// 定义左指针
let left = 0;
// 定义右指针
let right = nums.length - 1;
if (nums[right] !== nums.length) return nums.length;
if (nums[0] !== 0) return 0;
// 进入循环
while (left < right) {
// 找出中位数的下标
let mid = Math.floor((left + right) / 2);
if (nums[mid] === mid) {
// 如果中位数下标和元素值相同,说明缺失的值在中位数右边
// 让左指针移动到中位数右边
left = mid + 1
} else if (nums[mid] > mid) {
// 说明缺失的在中位数的左边
right = mid;
}
}
return left;
};
总结(本题给我们的启示思路)