二分查找
二分搜索模板
给一个有序数组和目标值,找第一次/最后一次/任何一次出现的索引,如果没有出现返回-1
模板四点要素
-
1、初始化:start=0、end=len-1
-
2、循环退出条件:start + 1 < end
-
3、比较中点和目标值:A[mid] ==、 <、> target
-
4、判断最后两个元素是否符合:A[start]、A[end] ? target
1、704. 二分查找
class Solution: def search(self, nums: List[int], target: int) -> int: start = 0 end = len(nums) - 1 while 1 < end - start: mid = int((end - start) / 2) + start if nums[mid] > target: end = mid elif nums[mid] < target: start = mid elif nums[mid] == target: return mid if nums[start] == target: return start if nums[end] == target: return end return -1