def search(nums, target):
if nums is None or len(nums) == 0:
return -1
left = 0
right = len(num)-1 #【第一步需要判断的】
while left < right:
mid = (left + right) // 2 #【第二步需要判断的】
#mid = (left + right +1) // 2
if nums[mid] > target:#条件,需要逻辑判断,此时要避免死循环
left = mid + 1
else:
right = mid
return left #【第三步要思考的】看是否要判断这个if nums[left] == target
在正式写总结前,我想说一下我踩过的那些坑,当时脑袋都要晕掉了,于是花了两天时间搞明白了二分法,写了这篇总结。我踩过的那些坑:之前采用while left <= right,经常遇到死循环。而且代码分支很多,经常考虑不到特殊情况,最后把自己绕晕了到底有多少种特殊情况。两天得此总结。二分法【三步走】方法1、先确定边界。一般情况下left=0,right=len(nums)-1是数组的...