题目链接
题目描述
解法一(顺序倒序遍历)
代码
func searchRange(nums []int, target int) []int {
x,y := -1,-1
if len(nums)==1&&nums[0]==target{
return []int{0,0}
}
for i := 0; i < len(nums); i++ {
if nums[i]==target {
x = i
break
}
}
for i := len(nums)-1; i >=0; i-- {
if nums[i]==target {
y = i
break
}
}
if x==-1{
return []int{-1,-1}
}
return []int{x,y}
}
解法二 (二分法)
sort.SearchInts()方法源码参考博客
https://blog.csdn.net/weixin_40660221/article/details/123826675
func searchRange(nums []int, target int) []int {
leftmost := sort.SearchInts(nums, target)
if leftmost == len(nums) || nums[leftmost] != target {
return []int{-1, -1}
}
rightmost := sort.SearchInts(nums, target + 1) - 1
return []int{leftmost, rightmost}
}