leetcode-搜索插入位置

这篇具有很好参考价值的文章主要介绍了leetcode-搜索插入位置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

35. 搜索插入位置

此题使用的是二分查找

二分查找的前提条件:

1.数组是有序的;2.数组中无重复元素,一旦出现重复元素,则返回的元素下标可能不是唯一的

二分查找涉及的边界问题比较多,比如当前这道题,到底是while left < right呢还是while left <= right呢?到底是right = mid呢还是right = mid - 1呢?

在此给出个区间定义,我们知道区间有左闭右闭[left, right],左闭右开[left, right),左开右开(left, right)(这个是用不到的)

左闭右闭
也即[left, right],定义的target在这个区间里,有如下两点:

1.while left <= right,此处使用的是<=,因为left== right是有意义的

2.if nums[mid] > target ,target落在了区间[left, mid),此处大家看清楚这个区间,是个右开,这个时候right的赋值应该为right = mid - 1,因为nums[mid]一定不是target

左闭右开
也即 [left, right),定义target在这个区间里,有如下两点:

1.while left < right,此处使用的是 < ,因为left == right 在这个区间里是么有意义的

2.if nums[mid] > target,因为当前nums[mid]不等于target,去左区间继续寻找,而寻找区间是左闭右开,所以right 赋值为 right = mid

下面给出两个区间的代码,大家自己看下:
左闭右闭

class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        left = 0
        right = len(nums) - 1
        while left <= right:
            mid = (left + right) // 2
            if target > nums[mid]:
                left = mid + 1
            elif target < nums[mid]:
                right = mid - 1
            else:
                return mid
        return right + 1

左闭右开文章来源地址https://www.toymoban.com/news/detail-786961.html

class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        left = 0
        right = len(nums)
        while left < right:
            mid = (left + right) // 2
            if target > nums[mid]:
                left = mid + 1
            elif target < nums[mid]:
                right = mid
            else:
                return mid
        return right

到了这里,关于leetcode-搜索插入位置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 搜索插入位置

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums = [1,3,5,6], target = 5 输出: 2 示例 2: 输入: nums = [1,3,5,6], target = 2 输出: 1 示例 3:

    2024年02月13日
    浏览(28)
  • 35. 搜索插入位置

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1:   输入: nums = [1,3,5,6], target = 5   输出: 2 示例 2:   输入: nums = [1,3,5,6], target = 2   输出

    2024年02月08日
    浏览(32)
  • 【算法Hot100系列】搜索插入位置

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年02月03日
    浏览(44)
  • 【力扣每日一题04】数组篇--搜索插入位置

    今天的题目,利用的是二分查找原理。很不幸我又没做出来,但是也很高兴发现自己的不足~ 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 示例 1: 示例 2: 示例 3: 由于官方答案我看不明

    2024年02月09日
    浏览(41)
  • 【Leetcode每日一题】35.搜素插入位置|二分查找数组下标

    🌱博主简介:大一计科生,努力学习Java中!热爱写博客~预备程序媛 📜所属专栏:LeetCode每日一题–进击大厂 ✈往期博文回顾: 【JavaSE】保姆级教程|1万字+10张图学会类与对象–建议收藏 🕵️‍♂️近期目标:成为千粉小博主。 🌺“再牛的程序员也是从小白开始,既然开始

    2024年02月21日
    浏览(60)
  • 代码随想录额外题目| 数组03 ●34排序数组查首尾位置 ●922按奇偶排序数组II●35搜索插入位置

    #34排序数组查首尾位置 medium,我写的:1 暴力 我写的,做了个类似二分搜索的方法: 随想录:从两头都做类似二分搜索 #922 按奇偶排序数组II 我的解法,有点蠢: inplace解法: 把odd idx放的偶数,给换到even idx放的奇数 注意j是从1开始,而且每轮i,j都是继续增加不回去 空间表

    2024年02月15日
    浏览(42)
  • 【LeetCode: 97. 交错字符串 | 暴力递归=>记忆化搜索=>动态规划 | 位置对应】

    🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文

    2024年02月05日
    浏览(46)
  • 【算法刷题day22】Leetcode:235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 50.删除二叉搜索树中的节点

    文档链接:[代码随想录] 题目链接:235. 二叉搜索树的最近公共祖先 题目: 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深

    2024年04月13日
    浏览(40)
  • python dataframe 在特定的位置插入列

    使用 np.insert() 函数即可 官方例子: 参考链接: pandas.DataFrame.insert — pandas 2.1.4 documentation (pydata.org)

    2024年01月17日
    浏览(52)
  • 【c++】:list模拟实现“任意位置插入删除我最强ƪ(˘⌣˘)ʃ“

        文章目录 前言 一.list的基本功能的使用 二.list的模拟实现 总结   1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指

    2024年01月17日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包