统计一个数字在排序数组中出现的次数。
示例 1:
输入: nums = [5,7,7,8,8,10], target = 8
输出: 2
该问题不能简单地使用二分法
因为我们返回的不是一个单一的位置
应该找到一段连续的目标
因此需要使用两次二分法寻找边界
以下代码减少的代码的冗余
使用两次有边界查找方法寻找区间
class Solution:
def searchRange(self, nums: List[int], target: int) -> List[int]:
if not nums:return 0
def rightBound(target):
i,j = 0,len(nums)-1
while(i<j):
m = (i+j)//2
if nums[m]<=target: i=m+1
else:j = m-1
return i
return rightBound(target)-rightBound(target-1)