func binarySearch(nums []int, target int) int {
//var left, right = 0, len(nums) - 1
var left int =0
var right int = len(nums) - 1
for left <= right {
mid := (left+right) >> 1
if nums[mid] == target {
return mid
} else if nums[mid] < target {
left = mid+1
} else {
right = mid-1
}
}
return -1
}
func rightBound(nums []int, target int) int {
if len(nums) == 0 {
return -1
}
left, right := 0, len(nums)
for left < right {
mid := (left+right)>>1
if nums[mid] == target {
left = mid+1
} else if nums[mid] < target {
left=mid+1
} else {
right=mid
}
}
if nums[left-1] == target {
return left-1
} else {
return -1
}
}
func leftBound(nums []int, target int) int {
if len(nums) == 0 {
return -1
}
left, right := 0, len(nums)
for left < right {
mid := (left+right)>>1
if nums[mid] == target {
right = mid
} else if nums[mid] < target {
left=mid+1
} else {
right=mid
}
}
if nums[left] == target {
return left
} else {
return -1
}
}
二分查找三种模式
最新推荐文章于 2022-10-28 10:58:33 发布