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

二分查找

时间:2024-04-30 16:37:59浏览次数:17  
标签:二分 right cur nums int 查找 left target

  1. 先给数组排序
  2. 定义最小点left和最大点right
  3. 取中间值作为cur
  4. 循环判断,cur跟target谁更大
  5. 若cur大了,则减小最大值right为cur-1;反之增加最小值为cur+1
  6. 直到找到cur下标跟target一样大的情况,就可以返回cur了
  7. 反之如果一直找不到,直到最小值left>最大值right了,就可以认为数组中没有这个值。
class Solution:
    def search(self, nums: List[int], target: int) -> int:
        left=0
        right=len(nums)-1
        while left<=right:
            cur=(left+right)//2
            if nums[cur] ==target:
                return cur
            elif nums[cur] >target:
                right=cur-1
            elif nums[cur]<target:
                left=cur+1
        return -1

标签:二分,right,cur,nums,int,查找,left,target
From: https://www.cnblogs.com/aduiduidui/p/18168249

相关文章

  • 利用二分法删除数组中元素
    二分法的思想主要是要设定起始值和终点值,计算中值,和给定值进行比较,如果大于给定值,则将中值作为终点值,否则作为起始值,重新计算中值。#include<stdio.h>intmain(){intarray[10]={1,2,3,5,8,15,20,30,100,200};intfirst=0,end=9,middle=(first+end)/2,num,i;s......
  • 二分查找
    1.0二分查找概念keywords:单调区间、最大化最小值(最小化最大值)、时间复杂度O(logn) 1.1二分模板模板来自于AK机大厂笔试星球。1.1.1在非递减数组中找到第一个≥x的数publicintlowerBound(int[]nums,intx){intl=0,r=nums.length-1;while(......
  • BST二叉查找树的接口设计
    /***********************************************************************************************************设计BST二叉查找树的接口,为了方便对二叉树进行节点的增删,所以采用双向不循环链表实现,每个节点内部都需要*有2个指针,分别指向该节点的左子树(lchild)和右子树......
  • 二分查找的左闭右开和左闭右闭写法
    0.参考参考链接:二分查找的左闭右开和左闭右闭写法1.思路0.序言lower_bound查找的是升序序列中的第一个出现target的pos,区间应从右向左收缩。upper_bound查找的是升序序列中的最后一个出现target的pos,区间应从左向右收缩。主循环判断本质目的是为了确保整个区间能够被检索......
  • 2015 ACM ICPC Singapore Regional D(折半枚举+二分)
    D-AssociationofComputerMaintenance题意给定至多350个小于100的质数,对于所有质数之积k将它分解为两个数a和b使得a*b=k。输出最小的a+b,并对1e9+7取模分析首先考虑想如果想让a+b最小,即让abs(a-b)最小。随后根据限制条件k的因子数不超过1e10,容易想到将k拆分成k1和k2,此......
  • P5896 [IOI2016] aliens (斜率优化 dp+wqs 二分)
    我们可以把所有点都对称到主对角线下方。然后每个点如果想被覆盖都会有一个最小的三角形,我们可以贪心的只留必须选的点。如果把剩下的点按\(x\)坐标升序排序,可以发现他们的\(y\)坐标也是升序排序的。记剩余点个数为\(n\),显然每个点都选自己的最小三角形最好。但是有可能\(......
  • 查找datafocus安装路径
    1.cat/etc/profile|grepDATA   2.解读下面一行master-192-168-0-15:/df-share表示该文件系统是通过网络文件系统(NFS)挂载的,其位置为master-192-168-0-15主机上的/df-share目录实际上,在主机上并没有名为/df-share的目录,这是一个挂载点的名称,而不是实际的目......
  • 查找链表倒数第k个数位置上的结点
    (1)描述算法的基本思想由题可知,该链表是个单向链表,如果要找到倒数第k个值,我们必须找到该链表的尾部,而单向链表从尾部向头部找倒数第k个值比较麻烦,所以我们可以从头部去找倒数第k个值(2)描述算法的详细实现步骤我们可以利用两个指针去遍历该链表,一个指针遍历完该链表计算出结点个数......
  • 如何用Sublime Text实现正则查找与替换
    比如将下面的汉字语义加上中括号[{"text":"微笑","path":"emot01.png"},{"text":"大笑","path":"emot02.png"},{"text":"鼓掌","......
  • [python省时间]处理文档,包括批量查找,替换,
    1、批量查找替换#-*-coding:utf-8-*-importosimportre#path=os.getcwd()str_old='insert'str_new='frs.event.queue'file_formate='init.sql'file_sql=open(r'F:\bak\init_all.sql','r+',encoding=......