18.在排序数组中搜索元素的开始位置和结束位置-二分查找法
package main
// @solution-sync:begin
func searchRange(nums []int, target int) []int {
return []int{left(nums, target), right(nums, target)}
}
func left(nums []int, target int) int {
l, r := 0, len(nums)-1
for l <= r {
m := l + (r-l)/2
if nums[m] >= target {
r = m - 1
} else {
l = m + 1
}
}
if l >= len(nums) || nums[l] != target {
return -1
}
return l
}
func right(nums []int, target int) int {
l, r := 0, len(nums)-1
for l <= r {
m := l + (r-l)/2
if nums[m] <= target {
l = m + 1
} else {
r = m - 1
}
}
if r < 0 || nums[r] != target {
return -1
}
return r
}Last updated