二分法:一种在有序数组中快速查找元素的方法
现总结模板如下:
- 题目中的目标要求
- 左右指针最后所处的状态
def two_spolit_find(nums,target):
左 = 0#定义左指针
右 = len(nums)-1#定义右指针
while 左>=右:#当循环结束,左指针必然会大于右指针1
mid = (左+右)//2
#1、通过左进一步确定序列的左边界
if nums[mid]<target:
左 = mid+1 #最后左必然会等于target;如果taget存在
else:
右 = mid-1#最后右必然会小于左,小于target
#2、通过左进一步确定序列的右边界
if nums[mid]<=target:
左 = mid+1 #最后左必然会大于target;如果taget存在
else:
右 = mid-1#最后右必然会小于左,等于target