当前位置: 首页 > news >正文

福州网站建设技术支持建站网站建设哪个好

福州网站建设技术支持,建站网站建设哪个好,3d绘图培训学校,房屋设计风格二分查找常见操作总结 1. 基本二分查找 目标: 在有序数组 nums 中查找 target 的索引(如果存在)。 适用场景: 需要在 有序数组 中查找某个特定元素。适用于无重复元素的情况。 示例: 输入 nums [1, 2, 3, 4, 5], target 3,输出 2。 d…

二分查找常见操作总结

1. 基本二分查找

目标: 在有序数组 nums 中查找 target 的索引(如果存在)。

适用场景:

  • 需要在 有序数组 中查找某个特定元素。
  • 适用于无重复元素的情况。

示例:
输入 nums = [1, 2, 3, 4, 5], target = 3,输出 2

def binary_search(nums, target):left, right = 0, len(nums) - 1while left <= right:mid = (left + right) // 2if nums[mid] == target:return midelif nums[mid] < target:left = mid + 1else:right = mid - 1return -1  # 没找到

2. 查找左边界(Lower Bound)

目标: 找到 第一个 大于等于 target 的元素索引。

适用场景:

  • 用于查找 某个值的最左侧出现位置,如查找元素插入的位置。
  • 有重复元素 时,找到 target 最左边的位置。

示例:
输入 nums = [1, 2, 2, 2, 3], target = 2,输出 1

def lower_bound(nums, target):left, right = 0, len(nums) - 1while left <= right:mid = (left + right) // 2if nums[mid] < target:left = mid + 1else:right = mid - 1return left  # 返回的是第一个大于等于 target 的索引

3. 查找右边界(Upper Bound)

目标: 找到 第一个 大于 target 的元素索引。

适用场景:

  • 需要获取比目标值大的第一个位置
  • 可用于计算某个值的出现次数。

示例:
输入 nums = [1, 2, 2, 2, 3], target = 2,输出 4

def upper_bound(nums, target):left, right = 0, len(nums) - 1while left <= right:mid = (left + right) // 2if nums[mid] <= target:left = mid + 1else:right = mid - 1return left  # 返回的是第一个大于 target 的索引

4 查找插入位置

目标: 找到 target 应该插入 的位置。

适用场景:

  • 需要在 有序数组 中插入一个新元素,并保持有序性。
  • 可用于 二分搜索的变体,比如寻找目标元素的最左/最右位置。

示例:
输入 nums = [1, 3, 5, 6], target = 5,输出 2

def search_insert_position(nums, target):left, right = 0, len(nums) - 1while left <= right:mid = (left + right) // 2if nums[mid] == target:return midelif nums[mid] < target:left = mid + 1else:right = mid - 1return left  # 返回插入位置

5. 寻找旋转排序数组中的最小值

目标: 在 旋转排序数组 中找到 target

适用场景:

  • 需要在 部分有序数组(如旋转排序数组)中进行二分查找。
  • nums 在某个位置发生了 旋转,但仍然部分有序。

示例:
输入 nums = [4, 5, 6, 7, 0, 1, 2], target = 0,输出 4

    def findMin(nums: List[int]) -> int:left, right = 0, len(nums) - 1  # 闭区间 [0, n-1]while left < right:  # 只要区间不缩至一个元素mid = (left + right) // 2if nums[mid] > nums[right]:  # mid 在左半部分left = mid + 1  # 缩小左边界else:  # mid 在右半部分right = mid  # 缩小右边界,保持 `right` 包含在内return nums[left]  # 最终 `left == right`,即最小值下标

二分查找常见操作对比表

操作目标适用场景返回值示例输入示例输出
基本二分查找在有序数组中查找目标值的索引数组 无重复元素,查找某个特定元素目标值的索引,若不存在返回 -1nums = [1,2,3,4,5], target = 32
查找左边界 (Lower Bound)找到第一个大于等于 target 的元素索引有重复元素,查找 target 最左侧的位置target 在数组中的最左索引,若不存在返回插入位置nums = [1,2,2,2,3], target = 21
查找右边界 (Upper Bound)找到第一个大于 target 的元素索引有重复元素,查找 target 右侧界限返回大于 target 的第一个索引nums = [1,2,2,2,3], target = 24
查找插入位置找到 target 应插入的位置在有序数组中插入新元素,并保持有序性target 应插入的位置nums = [1,3,5,6], target = 52
寻找旋转排序数组中的最小值在旋转排序数组中找到最小值旋转排序数组数组中的最小值nums = [4,5,6,7,0,1,2]0
http://www.dtcms.com/a/539117.html

相关文章:

  • 长沙网站建设联系电话重庆在建项目查询
  • 品牌网站的建设上海家政公司排名
  • 网站开发技术及软件介绍暴雪战网客户端下载
  • 网站建设商虎小程序上海外贸网站推广哪家好
  • 网站系统发生错误wordpress中文用户名注册
  • 怀柔区企业网站设计机构提供南京移动网站设计
  • 做网站 用什么语言韶关做网站公司
  • wp博客网站怎么做肇庆网站建设方案优化
  • 可以直接进入网站的正能量宜昌网站排名优化
  • 深圳西丽网站建设上海网站备案中心
  • thinkphp手机网站制作嘉兴网站排名优化公司
  • 杭州经济技术开发区建设局网站wordpress淘宝评论调用插件
  • 网站开发摊销年限api key域名是随便填写嘛
  • 公司企业网站程序手机营销型网站建设公司
  • 锐旗网站建设番禺建设网站服务
  • 好的app设计网站有哪些西部数码网站管理助手ftp
  • 建设企业网站就等于开展网络营销wordpress侧边联系方式
  • 网站开发 所有权服务器做网站FTP必要性大吗
  • 惠州建设工程质量监督站网站国内服务器做彩票网站安全吗
  • 网站建设中国十强wordpress 自定义摘要
  • app 官方网站 案例深圳专业专业网站设计
  • 云服务器建设网站软件阿里云轻量应用服务器wordpress
  • 房产网站建站广东佛山建网站
  • 徐州网站建设网站制作目前网站开发趋势
  • 徐州新沂网站建设php网站后台管理系统源码
  • 做移动网站多少钱网站建设公司中
  • 免费国外网站pro wordpress theme development
  • 淄博网站外包vs做的本地网站
  • 涿州做网站全屏响应式网站模板
  • 重庆网站建设外包哪家好对于高校类建设网站的要求