二分查找-实例(letcode704)

     上个章节介绍了二分查找算法,现在我们看下实际的应用,看下letcode704题,这个是个典型的二分查找题目:有序的数组中寻找目标值target就可以用二分查找算法,题目如下:

假设所有的字符不重复
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
示例 1:
输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4
示例 2:
输入: nums = [-1,0,3,5,9,12], target = 2
输出: -1
解释: 2 不存在 nums 中因此返回 -1

具体的代码实现如下:

class soultion:

#二分查找算法函数
def binary(self, s,target):

#定义左右指针
left=0
right = len(s)-1
mid=int(left+(right-left)/2)
while(left<len(s) and right>=0 and right>=left):

#二分查找算法计算
if(s[mid]<target):
left=mid+1
elif(s[mid]>target):
right=mid-1
elif(s[mid]==target):
return mid

#mid值的定义
mid=int(left+(right-left)/2)
return -1
soultion = soultion()
s = [-1,0,3,5,9,12]
target=12
m = soultion.binary(s,target)
print(m)

二分查找算法有几个关键点:左指针、右指针、中间值、target,编写代码时我们需要掌握这几个关键点:
1、首先需要定义一个左指针、右指针

2、然后根据左指针和右指针计算mid值

3、而判断条件为:nums[mid]与target值的比较

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值