二分查找
- 先给数组排序
- 定义最小点left和最大点right
- 取中间值作为cur
- 循环判断,cur跟target谁更大
- 若cur大了,则减小最大值right为cur-1;反之增加最小值为cur+1
- 直到找到cur下标跟target一样大的情况,就可以返回cur了
- 反之如果一直找不到,直到最小值left>最大值right了,就可以认为数组中没有这个值。
class Solution:
def search(self, nums: List[int], target: int) -> int:
left=0
right=len(nums)-1
while left<=right:
cur=(left+right)//2
if nums[cur] ==target:
return cur
elif nums[cur] >target:
right=cur-1
elif nums[cur]<target:
left=cur+1
return -1