剑指offer53:在排序数组中查找数字 I python
题目描述
解法:二分搜索左右边界
class Solution:
def search(self, nums: List[int], target: int) -> int:
if len(nums) == 0:
return 0
i = 0
j = len(nums)-1
while i <= j:
m = (i+j)//2
if nums[m] <= target:
i = m + 1
else: j = m - 1
if nums[j] != target:
return 0
right = i
i = 0
while i <= j:
m = (i+j)//2
if nums[m] < target: i = m + 1
else: j = m - 1
left = j
return right-left-1