func searchRange(nums []int, target int) []int {
// 寻找开头的第一个target位置
first := FindFirst(nums, target)
// 如果长度为0或者数组中没有目标值,返回默认值
if first == len(nums) || nums[first] != target {
return []int{-1, -1}
}
// 寻找开头的第一个target+1的第一个位置,并-1
last := FindFirst(nums, target+1)-1
return []int{first, last}
}
func FindFirst(nums []int, target int) int {
// 初始化索引
left, right := 0, len(nums)-1
for left <= right{
// 更新中心值
mid := left + (right - left)>>1
if nums[mid] < target{
left = mid + 1
}else{
right = mid - 1
}
}
return left
}
go语言刷题:34. 在排序数组中查找元素的第一个和最后一个位置
于 2021-07-07 14:05:54 首次发布