标签:二分法
class Solution:
def search(self , nums: List[int], target: int) -> int:
# 处理异常场景和如果首位元素刚好满足场景
if len(nums) == 0:
return -1
elif nums[0] == target:
return 0
elif nums[len(nums) - 1] == target:
return len(nums) - 1
left = 0
right = len(nums) - 1
# 使用二分法不断缩小左右边界,来找到符合的值
while left < right:
mid = (left + right) // 2
if nums[mid] < target:
left = mid + 1
elif nums[mid] == target:
return mid
else:
right = mid
# 当遍历完所有元素后,无满足的值,返回-1
if nums[left] != target:
return -1