二分查找
二分搜索模板
给一个有序数组和目标值,找第一次/最后一次/任何一次出现的索引,如果没有出现返回-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

浙公网安备 33010602011771号