题解 | 二分查找-I
二分查找-I
https://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @param target int整型
* @return int整型
*/
function search( nums , target ) {
// write code here
if(nums === []) return -1
let left = 0
let right = nums.length - 1
while(left <= right){
let mid = Math.floor((left+right)/2) // 向下取整
console.log(mid)
if(nums[mid] === target) return mid
else if(nums[mid] > target) right = mid-1
else left = mid+1
}
return -1
}
module.exports = {
search : search
};
二分最重要的就是边界条件。
思路:已经查过的元素就排除在区间外,所以在移动left或者right的时候要多走一格,进而得出循环终止条件为left<=right,因为left和right是可能重合的。(加等号多跳一格)
