二分法查找

二分法是查找时间复杂度较低的算法之一:o(log n),实际上就是寻找low high中间位置的值,不断增大low,缩小high的值来缩小范围。
整体结构为:

low=0
high=len(nums)-1
while low<=high: #此处若是high=len(nums) 不加=
	i=low+int((high-low)/2)
	if nums[i[<target:
		low=low+1
	elif nums[i]>target:
		high=high-1
	else:
		return i

 在这里插入图片描述
个人认为本题是二分查找较为有难度的题,因为要求了时间复杂度(符合条件常用的有折半查找,幂查找,欧几里得),此处寻找左右边界各使用一次二分查找。此处以右边界为例,左边界同理在这里插入图片描述

在这里插入图片描述

实际上的改变就是else语句处,写个数组即可理解。
力扣上同类型的还有35.搜索插入位置
34.在排序数组中查找元素的第一个和最后一个位置
69.x 的平方根
367.有效的完全平方数等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值