34. 在排序数组中查找元素的第一个和最后一个位置

image.png

二分查找

  1. package main
  2. import "fmt"
  3. func searchRange(nums []int, target int) []int {
  4. l :=0
  5. r :=len(nums)-1
  6. res :=[]int{-1,-1}
  7. for l<=r{
  8. mid :=l+(r-l)>>1
  9. if nums[mid]==target{
  10. res[0]= mid
  11. res[1] = mid
  12. i := mid-1
  13. for i>=0 &&nums[i]==target{
  14. res[0]=i
  15. i--
  16. }
  17. j := mid+1
  18. for j<len(nums)&&nums[j]==target {
  19. res[1]=j
  20. j++
  21. }
  22. return res
  23. }else if target>nums[mid] {
  24. l = mid+1
  25. }else if target<nums[mid]{
  26. r = mid-1
  27. }
  28. }
  29. return res
  30. }
  31. func main() {
  32. fmt.Println(searchRange([]int{5,7,7,8,8,10},8))
  33. }

image.png