26 lines
449 B
Go
26 lines
449 B
Go
package q34
|
|
|
|
func find(nums []int, target int) int {
|
|
l, r := 0, len(nums)
|
|
for l < r {
|
|
m := (l + r) / 2
|
|
switch {
|
|
case nums[m] < target:
|
|
l = m + 1
|
|
default:
|
|
r = m
|
|
}
|
|
}
|
|
return l
|
|
}
|
|
|
|
func searchRange(nums []int, target int) []int {
|
|
pos := find(nums, target)
|
|
if pos < 0 || pos >= len(nums) || nums[pos] != target {
|
|
return []int{-1, -1}
|
|
}
|
|
pos2 := find(nums[pos:], target+1)
|
|
return []int{pos, pos + pos2 - 1}
|
|
}
|
|
|
|
var _ = searchRange
|