二分法解题
class Solution:
def search(self, nums: List[int], target: int) -> int:
# 二分法查找
end_index = len(nums) - 1
# 数组长度为0时,返回0
if end_index < 0:
return 0
start_index = 0
r = 0
while start_index <= end_index:
# 取得中间索引
mid_index = (start_index + end_index) // 2
n_val = nums[mid_index]
if n_val < target:
start_index = mid_index + 1
elif n_val > target:
end_index = mid_index - 1
else:
# 左侧也有相等时
l_index = mid_index
while l_index >= start_index:
if nums[l_index] == target:
r += 1
else:
break
l_index -= 1
start_index = mid_index + 1
return r