题解 | #二分查找-II#

二分查找-II

http://www.nowcoder.com/practice/4f470d1d3b734f8aaf2afb014185b395

完全二分查找

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 如果目标值存在返回下标,否则返回 -1
 * @param nums int整型一维数组 
 * @param target int整型 
 * @return int整型
 */
export function search(nums: number[], target: number): number {
    // write code here
    const len = nums.length
    if (len === 0){
        return -1
    }
  
    let left = 0
    let rigth = len - 1
    
    // 边界检查
    if (nums[left] > target && nums[rigth] < target){
        return -1
    }
    
    if (nums[left] === target){
        return 0
    }
    
    let mid = 0
    let targetIndex = -1
    while(left <= rigth){
         mid = rigth === 1 ? 1 : left + ((rigth - left) >> 1)
        if (nums[mid] === target){
            targetIndex = mid
        }else if(mid < targetIndex){
            break
        }
        if (nums[mid] >= target){
            rigth = mid - 1
        }else{
            left = mid + 1
        }
    }
    return targetIndex
}
全部评论

相关推荐

牛客383479252号:9,2学生暑期实习失利开始投小厂,给这群人整自信了
点赞 评论 收藏
分享
运营你豪哥:简历改改吧-非本、求职意向技术岗、无实习经历、内容空洞 如果简历不爆改的话,应该是会持续崩溃了 1.把你教育经历放最下面去 2.蓝底照片很奇怪哈,感觉还在高中时代,建议白底重新拍一下 3.校园经历没啥必要,收集和反馈同学们对产品的意见,解决学生和老师之间的沟通,企业招聘不看这些哈 好好思考一下简历的设计和你要表达的重点,再去投简历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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