package main
import "fmt"
func explore(nums []int, index int) []int {
low := index
high := index
for {
if low-1 >= 0 {
if nums[low-1] == nums[index] {
low--
} else {
break
}
} else {
break
}
}
for {
if high+1 < len(nums) {
if nums[high+1] == nums[index] {
high++
} else {
break
}
} else {
break
}
}
return []int{low, high}
}
func searchRange(nums []int, target int) []int {
low := 0
high := len(nums) - 1
for low <= high {
median := (high + low) / 2
fmt.Println(low, high, median)
if target > nums[median] {
low = median + 1
} else {
high = median - 1
}
}
if low == len(nums) || nums[low] != target {
return []int{-1, -1}
}
return explore(nums, low)
}
func main() {
nums1 := []int{5, 7, 7, 8, 8, 10}
nums2 := []int{5, 7, 7, 8, 8, 10}
nums3 := []int{}
nums5 := []int{5, 7, 7, 8, 8, 10}
nums4 := []int{1}
fmt.Println(searchRange(nums3, 0))
fmt.Println(searchRange(nums1, 8))
fmt.Println(searchRange(nums2, 6))
fmt.Println(searchRange(nums5, 1))
fmt.Println(searchRange(nums5, 100))
fmt.Println(searchRange(nums4, 1))
}