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

二分查找

时间:2023-04-17 09:55:37浏览次数:34  
标签:二分 target nums int 查找 目标值 public left

经典二分查找,给定一个升序的整形数组nums和一个目标值target,查找target在nums中的位置,如果目标值存在返回下标,否则返回-1

public class Solution {
    public int Search(int[] nums, int target) {
        return BinarySearch(nums, 0, nums.Length - 1, target);
    }

    public int BinarySearch(int[] nums, int L, int R, int target)
    {
        while (L <= R)
        {
            int mid = L + (R - L) / 2;
            if (nums[mid] == target)
                return mid;
            else if (nums[mid] < target)
                L = mid + 1;
            else
                R = mid - 1;
        }

        return -1;
    }
}

二分查找的一个典型扩展: 给定一个升序数组和目标值,在数组中找到目标值并返回其索引,如果目标值不存在,返回它将被顺序插入的位置。只需将上述代码稍作修改即可

public class Solution {
    public int SearchInsert(int[] nums, int target) {
        int left = 0, right = nums.Length - 1;
        while (left <= right)
        {
            int mid = left + (right - left) / 2;
            if (nums[mid] == target)
                return mid;
            else if (nums[mid] > target)
                right = mid - 1;
            else 
                left = mid + 1;
        }

        return right + 1;
        // return left;
    }
}

 

标签:二分,target,nums,int,查找,目标值,public,left
From: https://www.cnblogs.com/ayang1/p/17324849.html

相关文章

  • 扎实打牢数据结构算法根基,从此不怕算法面试系列之004 week01 02-04 使用泛型实现线性
    1、算法描述在数组中逐个查找元素,即遍历。2、上一篇文的实现结果在扎实打牢数据结构算法根基,从此不怕算法面试系列之003week0102-03代码实现线性查找法中,我们实现了如下代码:packagecom.mosesmin.datastructure.week01.chap02;/***@Misson&Goal代码以交朋友、传福音......
  • 如何对数据透视表的数据进行查找
    问题:如果对数据透视表中的数据进行查找,例如找到每个店员和店铺对应的服务费。函数解决:直接对数据透视表的数据源进行多条件求和。=SUMIFS(C:C,A:A,H2,B:B,I2)更改数据透视表布局后再用Sumifs或查找函数: ......
  • 扎实打牢数据结构算法根基,从此不怕算法面试系列之002 week01 02-02 线性查找法
    1、线性查找法什么是线性查找法?举例:在一沓试卷中,找到属于自己的那张试卷。第1张:不是第2张:不是第3张:不是……第n张:是,找到了!第n+1张:不找了……这个解决问题的思路和过程体现就是线性查找法的思想。2、线性查找法思路梳理线性查找法,就是在线性的数据结构中来完成。例......
  • 扎实打牢数据结构算法根基,从此不怕算法面试系列之003 week01 02-03 代码实现线性查找
    1、算法描述在数组中逐个查找元素,即遍历。2、思路原理如算法描述,基本是最简单的代码块了,没有什么额外的原理。3、初步的代码实现线性查找法初步的代码实现:packagecom.mosesmin.datastructure.week01.chap02;/***@Misson&Goal代码以交朋友、传福音*@ClassNameLinea......
  • 如何自行查找出 SAP ABAP 标准的 OData 服务返回数据的后台数据库表和表字段名称
    笔者的知识星球有朋友提问,询问如何查找一个SAPABAPOData服务,暴露出的字段到底来自SAPABAP后台哪些数据库表的哪些字段。要回答这个问题,需要综合运用到我们过去学过的包括ABAP后台程序单步调试的知识。本文我们还是通过之前使用过的SAPCRM标准的Fiori应用,MyAccoun......
  • vlookup 反向查找
    数组{1,0},1指成功(返回B1:B8),0指失败(返回A1:A8),if函数在内存中返回一个二维数组,第一列是姓名,第二列是学号    ......
  • 二分图
    二分图简介定义:二分图的顶点集可分割为两个互不相交的子集,图中每条边依附的两个顶点都分属于这两个子集,且两个子集内的顶点不相邻。首先,二分图作为一种特殊的图模型,会被很多高级图算法(比如最大流算法)用到,不过这些高级算法我们不是特别有必要去掌握,有兴趣的读者可以自行搜索。......
  • #yyds干货盘点#Linux之find:查找目录下的文件
    【功能说明】find命令用于查找目录下的文件,同时也可以调用其他命令执行相应的操作。【语法格式】find[-H][-L][-P][-Ddebugopts][-olevel][pathname][expression]find[选项][路径][操作语句]1)注意find命令以及后面的选项和路径、操作语句,每个......
  • 2023-04-14 算法面试中常见的查找表问题
    2023-04-14算法面试中常见的查找表问题1Set的使用LeetCode349号问题:两个数组的交集给定两个数组,编写一个函数来计算它们的交集。示例1:输入:nums1=[1,2,2,1],nums2=[2,2]输出:[2]示例2:输入:nums1=[4,9,5],nums2=[9,4,9,8,4]输出:[9,4]说明:输......
  • AGC002D Stamp Rally 多种做法 kruskal重构树/可持久化并查集/整体二分
    D-StampRally(atcoder.jp)这题做法很多,我写的是可持久化并查集做法,但是裸的可持久化并查集是$O(nlog^3n)$,能过但是很慢!看洛谷的题解有一位大佬写了一个很妙的并查集的写法,按秩合并,每一步合并时用vector记录一下这个被合并到的节点的size和当前的时间,这样做可以找到每一个时......