博客
关于我
LeetCode 704. 二分查找 【二分】
阅读量:799 次
发布时间:2023-04-16

本文共 1123 字,大约阅读时间需要 3 分钟。

二分查找是一种高效的查找算法,尤其适用于已排序的数组。以下是实现二分查找的步骤:

  • 初始化指针:设置left指针为数组起始位置,right指针为数组末尾位置。
  • 计算中间指针mid:通过将left和right的平均值向下取整来计算mid的位置。
  • 比较目标值:如果target等于nums[mid],返回mid的值。
  • 调整查找方向
    • 如果target大于nums[mid],则目标值可能位于右半部分,调整left指针到mid+1。
    • 否则,目标值可能位于左半部分,调整right指针到mid-1。
  • 终止条件:当left超过right时,说明目标值不存在,返回-1。
  • 以下是实现代码:

    class Solution:    def search(self, nums: List[int], target: int) -> int:        left = 0        right = len(nums) - 1        while left <= right:            mid = left + (right - left) // 2            if nums[mid] == target:                return mid            elif nums[mid] < target:                left = mid + 1            else:                right = mid - 1        return -1

    示例分析

    • 示例1:nums = [-1,0,3,5,9,12], target = 9

      • 初始化left=0,right=5,mid=2,nums[2]=3 < 9,调整left=3。
      • 现在left=3,right=5,mid=4,nums[4]=9,找到目标,返回4。
    • 示例2:nums = [-1,0,3,5,9,12], target = 2

      • 初始化left=0,right=5,mid=2,nums[2]=3 > 2,调整right=1。
      • 现在left=0,right=1,mid=0,nums[0]=-1 < 2,调整left=1。
      • left=1,right=1,mid=1,nums[1]=0 < 2,调整left=2。
      • 循环结束,返回-1。

    优化建议

    • 避免重复代码:确保每一步操作简洁明了,减少不必要的计算。
    • 使用整数运算:在计算mid时,使用整数运算避免浮点数误差。
    • 测试边界条件:包括数组长度为1、目标值在数组开头或结尾的情况等。

    通过以上方法,您可以高效地在已排序数组中查找目标值。

    转载地址:http://lbgfk.baihongyu.com/

    你可能感兴趣的文章
    ORA-01207:文件比控制文件更新 - 旧的控制文件
    查看>>
    ORA-01795: 列表中的最大表达式数为 1000
    查看>>
    ORA-06575: 程序包或函数 NO_VM_DROP_PROC 处于无效状态
    查看>>
    ORA-08102的错误
    查看>>
    ORA-12505, TNS:listener does not currently know of SID given in connect descriptor异常
    查看>>
    ora-12541:tns:no listener
    查看>>
    【docker知识】联合文件系统(unionFS)原理
    查看>>
    ORACEL学习--理解over()函数
    查看>>
    oracle 10g crs命令,Oracle 10g CRS安装问题解决一例
    查看>>
    oracle 10g的安装配置
    查看>>
    Oracle 11.2.0.4 x64 RAC修改public/private/vip/scan地址
    查看>>
    Oracle 11G INDEX FULL SCAN 和 INDEX FAST FULL SCAN 对比分析
    查看>>
    Oracle 11g UNDO表空间备份增强
    查看>>
    Oracle 11g 使用RMAN备份数据库
    查看>>
    Oracle 11g 单实例安装文档
    查看>>
    Oracle 11g 操作ASM权限问题
    查看>>
    Oracle 11g 数据类型
    查看>>
    oracle 11g 静默安装
    查看>>
    Oracle 11gR2学习之二(创建数据库及OEM管理篇)
    查看>>
    Oracle 11gR2构建RAC之(2)--配置共享存储
    查看>>