NC105 二分查找-II
这个b站的视频对于二分的边界情况说明的很清楚,推荐观看学习。
二分查找为什么总是写错?–bilibili
- 这里的题目可以参考 找到第一个
大于等于 target 的元素 - IsBlue 的条件为
< target ,小于的都是蓝色,大于等于的都是红色,最后返回红色边界,也就是返回 r - 特判:但是这个target有可能在nums数组中不存在,在返回之前还需要判断数组下标为r的值是否等于 target 如果不等于则说明target不在数组中,返回 -1;否则直接返回 r
function search( nums , target ) {
if(nums.length === 0) return -1
let l = -1
let r = nums.length
let mid = Math.floor( (l + r)/2 )
while(l + 1 !== r){
mid = Math.floor( (l + r)/2 )
if(nums[mid] < target)
l = mid
else r = mid
}
if(nums[r] == target) return r
else return -1
}
module.exports = {
search : search
};
|