二分查找法思路:
顾名思义,二分查找就是不停地以二分的形式缩小查找范围,最终找到所需要的元素。
时间复杂度:O(logn)
二分查找模板写法:
class Solution:
def search(self, nums: List[int], target: int) -> int:
left, right = 0, len(nums) - 1
while left <= right:
mid = left + (right-left) // 2 # 计算中间值
if target == nums[mid]: # 判断中间值是否满足条件
return mid # 刚好找到就返回找到的中间值
if target < nums[mid]: # 中间值大了就缩小右边的区间
right = mid - 1
else :
left = mid + 1 # 中间值小了就缩小左边的区间
return -1 # 没找到则返回-1
典型例题:
1、力扣441.排列硬币
https://blog.csdn.net/weixin_44414948/article/details/113832518
2、力扣167.两数之和 II - 输入有序数组
https://blog.csdn.net/weixin_44414948/article/details/113826224
3、力扣50.Pow(x, n)
https://blog.csdn.net/weixin_44414948/article/details/113820505
版权声明:本文为weixin_44414948原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。