题解 | 二分查找-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是可能重合的。(加等号多跳一格)

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务