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

L2-二分查找

时间:2023-11-04 23:11:39浏览次数:33  
标签:二分 right target nums int middle 查找 L2 left

左闭右闭区间:(另一种为左闭右开区间)

注意middle的取值

class Solution {
    public int search(int[] nums, int target) {
        //首先关于(left + rigth)/2 取舍问题:int类型数据作除法会舍去小数部分
        int left = 0;
        int right = nums.length - 1;
       
        //int middle = (left + rigth)/2;

        while (left <= right){
            int middle = left + (right-left) / 2;
            if (nums[middle] > target){
                right = middle - 1;

            } else if (nums[middle] < target){
                left = middle + 1;
            } else {
                return middle;
            }
        }
        return -1;
    }
}

第一次运行时出现超时问题,是因为把

int middle = left + (right-left) / 2;放在了循环体外面

然后 

第二次出现问题(能运行但结果不对)是因为:忘记nums是一个数组,直接将middle的值当成数组值了,但是middle是数组下标,应改成nums[middle]

标签:二分,right,target,nums,int,middle,查找,L2,left
From: https://www.cnblogs.com/18191xq/p/17810003.html

相关文章

  • 二分查找总结
    不考虑重复元素下循环条件l<=rmid=(left+right)>>1(1)如果a[mid]=targetreturnmid(2)如果a[mid]<target搜索[mid+1,right](3)如果a[mid]>target搜索[left,mid-1]如果循环推出仍然没有找到,就标志着没有该元素。二分查找元素起始位置mid=(left+right)>>1需要找到一个......
  • 用二分法寻找第7位数(数组)
    #include<stdio.h>intmain(){  intk=7;  intarr[]={1,2,3,4,5,6,7,8,9,10};  intsz=sizeof(arr)/sizeof(arr[0]);    //元素个数的计算公式  intleft=0;                //左下标  intright=sz-1;  ......
  • CH32V307 使用PLL2配置系统时钟
    在进行系统时钟配置时,可以选择HSI、HSE、PLL作为系统时钟来源。而PLL时钟来源有几下几种,如下图: 以下为CH32V307时钟树框图,如下图: 关于使用HSE或HSI作为系统时钟,在CH32V307EVT都有相应例程,在system_ch32v30x.c文件中直接使用相关宏定义即可,如下图: 本篇文章主要讲解使......
  • 客户端如何查找FTP服务器的用户名和密码
    在互联网的早期阶段,FTP(文件传输协议)是一种非常常用的技术,它允许用户在计算机之间传输文件。然而,由于网络安全和隐私的考虑,许多FTP服务器现在都使用认证系统来限制用户的访问。因此,为了连接到FTP服务器,您通常需要知道用户名和密码。这篇文章将指导您如何在客户端查找FTP服务器的用......
  • 二分查找
    intmain(){ intarr[]={1,2,3,4,5,6,7,8,9,10}; inta=7;//a可改变 intsz=sizeof(arr)/sizeof(arr[0]); intleft=0; intright=sz-1; while(left<=right) { intmid=(left+right)/2; if(arr[mid]>a) { right=mid-1; ......
  • 学生管理系统如何查找名字相同的学生
    STU*search_link(STU*head,char*name){if(NULL==head){printf("链表不存在\n");returnNULL;}//判断链表是否存在else{STU*pb=head;while((strcmp(pb->name,name)!=0)&&(pb->nex......
  • 查找附近店铺(Redis GEO数据结构实现)
    附近店铺(RedisGEO数据结构实现)GEO数据结构GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。常见的命令有:GEOADD:添加一个地理空间信息,包含:经度(longitude)、纬度(latitude)、值(member)GEO......
  • 最小生成树、二分图(11/2)
    到集合得最短距离是指点到集合中的所有点最短距离,集合就是遍历或正选中的数prim#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;intn,m;constintN=510;constintINF=0x3f3f3f3f;intg[N][N];intdist[N];boolst[N];intprim(){......
  • 配置端口转发来实现局域网内访问WSL2
    一.配置防火墙入站规则打开windows的防火墙高级设置,添加入站端口,比如:8888二.配置端口转发1.以管理员权限打开PowerShell2.查看当前的转发设置netshinterfaceportproxyshowall3.添加新的转发netshinterfaceportproxyaddv4tov4listenaddress=0.0.0.0listenpo......
  • 查询算法——顺序查找(优化),二分查找(递归)
    顺序查找顺序查找又称为线性查找,是一种最简单的查找方法。适用于线性表的顺序存储结构和链式存储结构,从第一个元素开始逐个与需要查找的元素x进行比较,当比较到元素值相同时,返回元素m的下标,如果比较到最后都没有找到,则返回-1;时间复杂度为O(n)点击查看代码publicstaticvoidm......