// 找到一个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