NC105 二分查找-II
这个b站的视频对于二分的边界情况说明的很清楚,推荐观看学习。
- 这里的题目可以参考 找到第一个
大于等于 target
的元素 - IsBlue 的条件为
< target
,小于的都是蓝色,大于等于的都是红色,最后返回红色边界,也就是返回 r
- 特判:但是这个target有可能在nums数组中不存在,在返回之前还需要判断数组下标为r的值是否等于 target 如果不等于则说明target不在数组中,返回 -1;否则直接返回 r
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 如果目标值存在返回下标,否则返回 -1
* @param nums int整型一维数组
* @param target int整型
* @return int整型
*/
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
};