题解 | #二分查找-I#

https://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b

  1. 设置两个检查点
  2. 因为数组是升序数组,所以去数组中点来与目标值target进行对比,不断缩小范围
  3. 当中点与target判断之后,以中点为基准对两个检查点进行加一或者是减一操作
  4. 当target与中点相同,那就是当前坐标
  5. 失败返回-1
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param nums int整型一维数组 
 * @param target int整型 
 * @return int整型
 */
export function search(nums: number[], target: number): number {
    // write code here
    //let index = nums.indexOf(target)
    let index = -1
    //空
    if(nums.length==0) {
        return -1
    }
    /*
    for(let i = 0,j=nums.length-1;i<j;i++,j--) {
        let middle=Math.floor((i+j)/2)
        if(nums[middle]>)
    }*/
    let i=0,j=nums.length-1,middle=0
    while(i<=j) {
        middle=Math.floor((i+j)/2)
        if(nums[middle]>target) {
            j=middle-1
        }
        else if(nums[middle]<target){
            i=middle+1
        }else {
            return middle
        }
    }
    return index
}


全部评论

相关推荐

头像
不愿透露姓名的神秘牛友
03-13 10:56
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务