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

二分查找

时间:2024-05-24 09:22:32浏览次数:20  
标签:二分 target mid high 查找 low

二分查找的写法(有两种,这里只记录第一种):

 

如果区间是[a,b],即可以取到low、high,则mid=(low+high)/2:

1.while(low <= high){..},注意此处是" <= "

2.if(v[mid] < target){low ++;}

3.if(v[mid] > target){high --;}

这里条件控制一定要明确:<=、low++、high--。

补充:while(low <= high)而非while(low < high)的原因:这是在闭区间[low,high]查找,右边的high是可以取到的,所以查询条件里要把low==high的也考虑到。

 

相关:双指针、二分查找、快慢指针、滑动窗口、求2Sum、nSum。

标签:二分,target,mid,high,查找,low
From: https://www.cnblogs.com/jinziguang/p/18209887

相关文章

  • 【CodeChef】Limit of MEX(二分、ST表、组合数学)
    题目大意:计算\(\sum_{L=1}^{N}\sum_{R=L}^{N}f(A_L,...,A_R)\),其中\(f(A_1,A_2,...,A_N)=\max(A_1,A_2,...,A_N)-count(A_1,A_2,...,A_N)+1\),\(count\)函数的值为参数中不同元素的个数。考虑计算\(\sum_{L=1}^{N}\sum_{R=L}^{N}max(A_1,A_2,...,A_N)\)。对于任意\(1\lei\len......
  • 二分图的判定(Bipartite graph pending)
    二分图的判定(Bipartitegraphpending)////CreatedbyLANSGANBSon24-5-23.///**codetemplate:https://github.com/LANSGANBS/code-template*local:C:\Users\18019\CLionProjects\.cpp-code*URL:NULL*Last_Status:NULL*写完这道就去原*/#include<b......
  • 二分图
    二分图的概念:如果将一个无向图的结点染成黑色或白色,并且可以满足任意相同颜色的两点之间没有边,这个无向图就是二分图。一个图是否为二分图,一般用染色法判断。用\(0,1\)表示顶点的颜色。将任意一个顶点任意染色,然后遍历图,如果遇到没染色的点,就染成与这个点相反的颜色;否则判断......
  • 按文件扩展名查找目录下的文件
    From: https://mp.weixin.qq.com/s/RxyRU5kYvYJ3Wb4I86Vx6A---------------------------------------------------------------------------------------importglobclassTest_Find_File:deftest_find_file(pattern,path='.'):"""......
  • 完全二分图生成树个数
    首先矩阵树定理,得到一个行列式,大概形如:\[\begin{bmatrix}m&&&&-1&-1&-1\\&m&&&-1&-1&-1\\&&m&&-1&-1&-1\\&&&m......
  • 二分
    时间复杂度连续自然数和对一个给定的正整数$M$,求出所有的连续的正整数段(每一段至少有两个数),这些连续的自然数段中的全部数之和为$M$。例子:$1998+1999+2000+2001+2002=10000$,所以从$1998$到$2002$的一个自然数段为$M=10000$的一个解。题目看到是连续数字相加,就可以用......
  • 二分答案 洛谷P3853路标设置
    这个题思路和洛谷P2440有点像,建议先看P2440这个题,较简单。[TJOI2007]路标设置题目背景B市和T市之间有一条长长的高速公路,这条公路的某些地方设有路标,但是大家都感觉路标设得太少了,相邻两个路标之间往往隔着相当长的一段距离。为了便于研究这个问题,我们把公路上相邻路标的最......
  • 二分答案 洛谷2440木材加工
    二分答案题目详见洛谷P2440木材加工分享一下自己新学习的二分答案的方法,开始可能有点奇怪为啥这样能做,但其实思路很简单。起始思路题目要求我们求最大的分解长度,所以我(们)最开始想的肯定是从大到小(求最大值)枚举答案,看看是否满足,满足不了就加1。但这样暴力肯定是会超时的,那我们......
  • 代码随想录算法训练营第一天|704,34,35(二分查找),27(双指针)
    二分查找1.使用条件:数组,升序,值不唯一。2.时间复杂度O(logn)可分为左闭右闭,左闭右开两种区间类型来求解。左闭右闭:left=0,right=nums.Length-1,while(left<=right),right=middle-1.左闭右开:left=0,right=nums.Length,while(left<right),right=middle.......
  • 算法随想录打卡第一天|704. 二分查找、27. 移除元素
    704.二分查找-力扣(LeetCode)自己的解法是这样的,超出了时间限制,现在觉得应该是在mid的计算中出了问题。然后在mid的转换中没有right减去1或者left加上1。这两点的问题。自己很习惯的方式是左闭合加上右闭合。可以省去很多对于临界值忘记考虑的麻烦。超时代码贴出:publicin......