首页 > 其他分享 >二分查找

二分查找

时间:2024-10-15 23:13:16浏览次数:6  
标签:二分 right cn mid 查找 https leetcode left

[https://leetcode.cn/problems/binary-search/](题目链接)

二分查找有前提条件:序列有序。序列中无重复元素不是必要条件。

二分查找注意区间:如果是左闭右开,while循环的条件是left < right,每一次查找结束后,left要更新为mid+1或者right更新为mid;
如果是左闭右闭,循环条件是left <= right,left更新为mid+1或者right更新为mid-1。

*相关题目
[https://leetcode.cn/problems/search-insert-position/](搜索插入位置)
题目条件是有序数组,一共四种情况,这里以区间左闭右开为例子,第一种情况插入在所有元素之前,这时left = right = 0;第二种情况找到元素,return mid即可;第三种情况在区间中段插入,如果最后mid < target,那么left = mid + 1,循环终止,插入位置在left,如果mid > target,那么left = mid - 1,插入位置在left;第四种情况在所有元素之后插入,这是left = right = size;所以最终返回left。
[https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/](在排序数组中查找元素的第一个和最后一个位置)
可以用两个二分法分别寻找左边界和右边界,第一个while循环找左边界,每次mid == target则更新leftburder的值并把right的值更新,第二个循环同理。
[https://leetcode.cn/problems/sqrtx/](x的平方根)
首先明确平方根的范围,除了0和1之外,x的平方根小于等于x/2;然后从1到x/2寻找mid*mid == x的数,代码中要用mid == x / mid,防止溢出。因为两种情况都是right比较小,所以返回right。
[https://leetcode.cn/problems/valid-perfect-square/](有效的完全平方数)
同上题。

标签:二分,right,cn,mid,查找,https,leetcode,left
From: https://www.cnblogs.com/Blogwwww/p/18468743

相关文章

  • E Revenge on My Boss CCPC 2023 Harbin Site 贪心,二分
    传送门给出了三个数组\(\{a_i\},\{b_i\},\{c_i\}\)要求给出一个排列\(p\)最小化:任选一个位置\(m\),最大化贡献\(S=(\sum_{i=1}^ma_{p_i}+\sum_{i=m}^nb_{p_i})c_{p_m}\)。标准的最小的最大提示我们考虑二分。这里直接二分答案\(Mid\)。那么就考虑是否存在一个排列使得对于任意\(......
  • C#哈希查找算法
    前言哈希查找算法是一种高效的查找算法,通过将键值映射到哈希表中的位置来实现快速访问。在C#中,哈希查找通常通过哈希表(Hashtable)或字典(Dictionary)来实现。实现原理哈希函数:将键值转换成哈希值,该哈希值决定了键值在哈希表中的位置。哈希表:一种数据结构,用于存储键值对。哈希表中的位......
  • C#哈希查找算法
    前言哈希查找算法是一种高效的查找算法,通过将键值映射到哈希表中的位置来实现快速访问。在C#中,哈希查找通常通过哈希表(Hashtable)或字典(Dictionary)来实现。实现原理哈希函数:将键值转换成哈希值,该哈希值决定了键值在哈希表中的位置。哈希表:一种数据结构,用于存储键值对。哈希表......
  • 顺序查找、二分查找
    一、基本查找(顺序查找):从前往后,挨个查找二、二分查找(折半查找)1、前提条件:数组中的数据必须是有序的。2、核心思想:每次排除一半的数据,查询数据的性能明显提高极多。举例:从一组数据中,找出79。第一步:从小到大排序。第二步:此时目标值79小于81,因此要将right移到mid左侧。......
  • Excel:vlookup函数实现查找
    1.要查找宋江的英语,把鼠标放在对应单元格然后开始编辑2.选中所选区域,点击F4锁定区域,不然下拉填充的时候会变VLOOKUP在查找时有严格要求,查找值必须在所选区域的第一列,因此如果你的查找值不在第一列,可能会导致不能正常选择或使用。3.要理解函数括号里面的值都是什么意思在选......
  • 查找大量时序遥感文件缺失、不连贯的成像日期:Python代码
      本文介绍批量下载大量多时相的遥感影像文件后,基于Python语言与每一景遥感影像文件的文件名,对这些已下载的影像文件加以缺失情况的核对,并自动统计、列出未下载影像所对应的时相的方法。  批量下载大量遥感影像文件对于RS学生与从业人员可谓十分常见。在我们之前的文章中,就介......
  • [SDOI2017] 新生舞会——二分 最大费用最大流
    [SDOI2017]新生舞会题目描述学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴。有\(n\)个男生和\(n\)个女生参加舞会,一个男生和一个女生一起跳舞,互为舞伴。Cathy收集了这些同学之间的关系,比如两个人之前认识没,计算得出\(a_{i,j}\)。Cathy还需......
  • 手撸二叉树——二叉查找树
    二叉树是数据结构中非常重要的一种数据结构,它是树的一种,但是每个节点的子节点不能多余两个,可以是0,1,2个子节点,0个子节点代表没有子节点。常见的二叉树结构如下图所示:每个节点的子节点不多于2个,其中3,4,5没有子节点,2有一个子节点,0,1都有两个子节点。基础概念根节点:树的其实节点,没有......
  • 行人重识别——基于文本描述的行人检索与查找查询对象
    介绍人的重新识别,即搜索人的图像,在许多方面都有需求,如从安全摄像机中寻找嫌疑人或丢失的儿童。其中,基于文本的人的重新识别,即不搜索显示与输入图像相同的人的图像,而是从文本中搜索显示与之匹配的人的图像,已经引起了很多人的注意。在基于文本的人的再识别任务中,主要的方法......
  • C#二分查找算法
    前言二分查找算法是一种在有序数组中查找特定元素的搜索算法。实现原理二分查找的实现依赖于以下几个关键步骤:计算查找范围的中间索引。比较中间索引处的值与目标值。根据比较结果调整查找范围(左半部分或右半部分)。重复上述步骤直到找到目标值或查找范围为空。动图演示......