SOURCE

// 找到一个target就返回其index
function dichotomyMethodFirstFound(nums,target){
    let left = 0, right = nums.length - 1
    while (left <= right) {
        let mid = parseInt((right +left)/2)
        if (nums[mid] == target){
            return mid
        } else if (nums[mid] > target){
            right = mid -1
        } else if (nums[mid] < target) {
            left = mid+1
        }
    } 
    return -1
}
    
let target=10
let index = dichotomyMethodFirstFound([0,1,2,3,4,5,6,7,7,7,10,10,10,13,14,15],target)
console.log(target  + " First found at -- " + index)


// 找到最左侧的target并返回其index
function dichotomyMethodLeftFound (nums,target) {
    let left = 0, right = nums.length - 1, pos = -1
    while (left <= right)
    {
        let mid = parseInt((right + left)/2)
        if (nums[mid] == target){
            pos = mid
            right = mid - 1
        } else if (nums[mid] > target){
            right = mid - 1
        } else if (nums[mid] < target){
            left = mid + 1
        }

    }
    return pos
}

let target1=10
let index1 = dichotomyMethodLeftFound([0,1,2,3,4,5,6,7,7,7,10,10,10,13,14,15],target1)
console.log(target1 + " Left found at -- " + index1)


// 找到最右侧的target并返回其index
function dichotomyMethodRightFound (nums,target) {
    let left = 0, right = nums.length - 1, pos = -1
    while (left <= right)
    {
        let mid = parseInt((right + left)/2)
        if (nums[mid] == target){
            pos = mid
            left = mid + 1
        } else if (nums[mid] > target){
            right = mid - 1
        } else if (nums[mid] < target){
            left = mid + 1
        }

    }
    return pos
}

let target2 = 10
let index2 = dichotomyMethodRightFound([0,1,2,3,4,5,6,7,7,7,10,10,10,13,14,15],target2)
console.log(target1 + " Right found at -- " + index2)
console 命令行工具 X clear

                    
>
console