func searchRange(nums []int, target int) []int {
n := len(nums)
if n == 0 {
return []int{-1,-1}
}
return []int{LBound(-1,n-1,nums,target),RBound(0,n,nums,target)}
}
func LBound(L,R int , nums []int, target int) int {
if L+1 >= R {
if nums[R] == target {
return R
}
return -1
}
mid := (L+R)/2
if target <= nums[mid] {
return LBound(L,mid,nums,target)
}
return LBound(mid,R,nums,target)
}
func RBound(L,R int, nums []int, target int) int {
if L+1 >= R {
if nums[L] == target {
return L
}
return -1
}
mid := (L+R)/2
if target < nums[mid] {
return RBound(L,mid,nums,target)
}
return RBound(mid,R,nums,target)
}
No.195 - LeetCode34. Find First and Last Position of Element in Sorted Array - 经典左右届二分
最新推荐文章于 2025-12-04 17:53:16 发布
本文深入探讨了一种在有序数组中查找目标元素首次和末次出现位置的搜索范围算法。通过递归方式实现左边界和右边界查找,为解决重复元素问题提供了一种高效解决方案。
289

被折叠的 条评论
为什么被折叠?



