Leetcode 704 二分查找法
题目
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
解析:
什么是二分查找法?就是从中间开始,通过比较获取目标值;
关键点1: 是循环的写法,最简单的就是 while(left<=right)
关键点2:middle的值如何变化,画图示意即知
关键点3:整除的表达式是\\
关键点4:python定义参数不需要Int,float,直接定义即可
关键点5:否则返回-1就是最后一个return -1,因为如果是其他条件,之前就会return走
class Solution:
def search(self, nums: List[int], target: int) -> int:
left = 0
right = len(nums) - 1
while (left <= right):
middle = left + (right - left) // 2 #防止溢出
if nums[middle] > target:
right = middle - 1
elif nums[middle] < target:
left = middle + 1
else:
return middle
return -1