class Solution:
def search(self, nums: List[int], target: int) -> int:
"""
找左右区间
"""
i = 0
j = len(nums)-1
# 先找右边界吧
while i<=j:
mid = i + (j-i)//2
if nums[mid] > target:
j = mid-1
elif nums[mid] <= target:
i = mid + 1
right = i
# 如果数组中没有target,则提前结束
if j >= 0 and nums[j]!=target:
return 0
# 查找完右边界后,左边界 left 一定在闭区间[0,j]之间
i = 0
while i <= j:
mid = i + (j-i)//2
if nums[mid] < target:
i = mid + 1
else:
j = mid - 1
left = j
return right - left - 1