首页 > 其他分享 >L-3: 35.搜索插入位置

L-3: 35.搜索插入位置

时间:2023-11-05 20:11:05浏览次数:33  
标签:return nums int mid 35 插入 查找 搜索 left

首先解释一下二分查找的时间复杂度为logn的问题:

  假设长度为 n,简单理解如下:

  第1次查找是 n/2 = n/21

  第2次查找是 n/4 = n/22

  第3次查找是 n/8 = n/23

  第4次查找是 n/16 = n/24

  ..... 最后二分查找查到结果集只有一个,表示定位到了该数据

  第 x 次查找是 n/2x = 1

  推到出 2x = n,x = log2n

class Solution {
    public int searchInsert(int[] nums, int target) {
        // Map <Integer, Integer> map = new HashMap<>();
        // for (int i = 0; i < nums.length; i++) {
        //     map.put(nums[i], i);
        // }
        // if (map.containsKey(target)) {
        //     return map.get(target);
        // }else {
        //     return -1;
        // }

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

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

    }
}

关键点:当不满足while循环的时候直接返回left的值,就是我们要找的下标

(我也不知道为什么写了一段map的代码)

标签:return,nums,int,mid,35,插入,查找,搜索,left
From: https://www.cnblogs.com/18191xq/p/17811064.html

相关文章

  • java.time.format.DateTimeParseException: Text ‘202310132358‘ could not be pars
    你遇到的问题是由于在解析日期和时间时格式不正确。Java无法解析‘202310132358’这个字符串,因为它不符合Java日期时间格式。Java期望的日期时间格式通常是“yyyy-MM-ddHH:mm:ss”,其中:yyyy是四位数的年份MM是两位数的月份dd是两位数的日期HH是两位数的小时(24小时制)mm是两......
  • 搜索相关指令
    谷歌:1.“xxxx"代表完全匹配搜索(出现引号内所有词,顺序不变) 2.*  代表任何文字包括     3.inanchor     搜索结果不一定包括搜索词,但指向页面的链接锚文字中出现的搜索词(锚文本:就是带超链接的文字,你点击文字就可以链接到相应的网页上。)4.elated指令......
  • 108. 将有序数组转换为二叉搜索树
    目录题目题解题目给你一个整数数组nums,其中元素已经按升序排列,请你将其转换为一棵高度平衡二叉搜索树。高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过1」的二叉树。题解题目给出的“有序数列”帮助我们满足了“二叉搜索树”的条件......
  • 小测试:HashSet可以插入重复的元素吗?
    Set的定义是一群不重复的元素的集合容器。也就是说,只要使用Set组件,应该是要保证相同的数据只能写入一份,要么报错,要么忽略。当然一般是直接忽略。如题,HashSet是Set的一种实现,自然也符合其基本的定义。它的自然表现是,一直往里面插入数据,然后最后可以得到全部不重复的数据集......
  • [LeetCode] 1535. Find the Winner of an Array Game
    Givenanintegerarrayarrofdistinctintegersandanintegerk.Agamewillbeplayedbetweenthefirsttwoelementsofthearray(i.e.arr[0]andarr[1]).Ineachroundofthegame,wecomparearr[0]witharr[1],thelargerintegerwinsandremainsat......
  • 【工作01】某科研院所 - 3500每月 - offer - 拒
    经历  导师推荐的一家单位。  跟我说的好听。说什么就开始的半年(6个月实习期)难捱,之后每个月工资(底薪+绩效)比学校发给他的还高。  这里需要先说明一下我所在大学的教师工资。经历过一次工资发放改革,现在绩效平摊到了每一个月里,他一个月的工资到手大概是9000左右,五险一金......
  • 无涯教程-MongoDB - 文本搜索
    从2.4版开始,MongoDB开始支持文本索引来搜索字符串内容,文本搜索使用词干搜索技术通过删除词干停止词(例如a,an,the,等)来在字符串字段中查找指定的词。目前,MongoDB支持大约15种语言。启用文本搜索最初,"TextSearch"是一项实验性函数,但从2.6版开始,默认情况下启用此配置。但是如果......
  • NEFU OJ Problem1356 帽儿山奇怪的棋盘 题解
    帽儿山奇怪的棋盘题目:TimeLimit:1000ms|MemoryLimit:65535KDescription军哥来到了帽儿山,发现有两位神人在顶上对弈。棋盘长成下图的模样:每个点都有一个编号:由上到下,由左到右,依次编号为1、2……12。两位神人轮流博弈,每一轮操作的一方可以取走一个棋子,或者取走相邻的两......
  • word中如何在双栏排版中插入单栏排版内容
    在需要单栏排版的部分,将光标定位到该部分的开头和结尾。分别点击“布局”选项卡,在“页面设置”组中找到“分隔符”选项,然后选择连续分节符(开头与结尾都需要)。这样就在当前位置插入了一个分隔符,建议在Word选项中将显示打开。接下你可以在两个分节符之间单独设置单栏排版。将......
  • 第四章:超越经典搜索
    第四章:超越经典搜索上一章所讨论的问题具有如下性质:环境是可观察的、确定的、已知的,问题是一个行动序列。本章将讨论不受环境性质的约束。1.局部搜索算法和最优化问题上一章提到的搜索算法,是为了找到一条或多条达到目标的路径。而在许多问题中,到达目标的路径是不相关的。在这......