704二分查找 python

该文章描述了一个Python类方法,用于在已排序的整数数组中搜索目标值。方法使用二分查找策略,通过不断缩小搜索范围来找到目标值的下标,若找不到则返回-1。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1

class Solution:
    def search(self, nums: List[int], target: int) -> int:
        # length = len(nums)
        # start = 0
        
        # end = length-1
        # middle = math.floor((end - start)/2)

        # while True:
        #     if target > nums[middle]:
        #         start = middle
        #         middle += math.floor((end - start)/2)
        #     if target < nums[middle]:
        #         end = middle
        #         middle = start + math.floor((end - start)/2)
        #     if target == nums[middle]:
        #         break
            
        # return(middle)
#以上是努力了半小时最后还是没跑通的错误版本
#以下是看完视频教程后一遍跑通的正确版本

        # 尝试左闭右闭 [left, right]
        left = 0
        right = len(nums)-1
        
        while left <= right:
            middle = int(left + right)
            if (target < nums[middle]):
                right = middle - 1
            if (target > nums[middle]):
                left = middle + 1
            if (target == nums[middle]):
                return middle
        return -1

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值