lc-go/solutions/0/q34/solution.go

27 lines
577 B
Go

// Package q34 implements a solution for https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array/
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