范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

100道高频LeetCode算法图文题解,数组二分一写就废

  在这个系列的博客中,我们根据LeetCode官方给出的每个题目的出现频率,整理并收录了每个类别里高频出现的题目,从简单到中等再到困难,为你提供解题技巧和最佳实践。我们将介绍常见的算法思想,如贪心算法、动态规划、回溯算法等,希望能帮助你提高算法水平,成为你进入人工智能行业敲门砖。
  704:二分查找(难度2/频率5)
  题目链接:https://leetcode-cn.com/problems/binary-search/
  给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
  示例 1:
  输入: nums = [-1,0,3,5,9,12], target = 9
  输出: 4
  解释: 9 出现在 nums 中并且下标为 4
  示例 2:
  输入: nums = [-1,0,3,5,9,12], target = 2
  输出: -1
  解释: 2 不存在 nums 中因此返回 -1解题思路
  本题提到数组为有序数组 ,同时还强调 无重复元素 ,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的,这些都是使用 二分法的前提条件 ,当大家看到题目描述满足如上条件的时候,可要想一想是不是可以用二分法了。
  大家写二分法经常写乱,主要是因为 对区间的定义没有想清楚,区间的定义就是不变量 。要不信你现在可以动手写个二分查找,一定会遇到一个问题,到底是  while(left < right)  还是 while(left <= right) ,到底是right = middle 呢,还是要right = middle - 1 呢?在二分查找的过程中,保持不变量,就是在while寻找中每一次边界的处理都要坚持根据区间的定义来操作,这就是 循环不变量 规则。
  二分查找的区间是不断迭代的,解决上述问题就一定要遵循区间定义, 区间的定义一般为两种,左闭右闭即[left, right],或者左闭右开即[left, right)。 第一种写法:区间左闭右闭
  区间的定义决定了二分法的代码应该如何写,因为定义target在[left, right]区间,所以有如下两点: while (left <= right) 要使用 <= ,因为left == right是有意义的,所以使用 <= if (nums[middle] > target) right 要赋值为 middle - 1,因为当前这个nums[middle]一定不是target,那么接下来要查找的左区间结束下标位置就是 middle - 1
  例如在下列数组查找元素33,如图所示:
  递增数组,索引为0和11
  注意middle的计算
  注意left的变化
  class Solution:     def search(self, nums: List[int], target: int) -> int:         left, right = 0, len(nums) - 1  # 定义target在左闭右闭的区间里,[left, right]         while left <= right:             middle = left + (right - left) // 2             if nums[middle] > target:                 right = middle - 1  # target在左区间,所以[left, middle - 1]             elif nums[middle] < target:                 left = middle + 1  # target在右区间,所以[middle + 1, right]             else:                 return middle  # 数组中找到目标值,直接返回下标         return -1  # 未找到目标值第二种写法:区间左闭右开
  区间左闭右开,也就是[left, right) ,那么二分法的边界处理方式则截然不同。
  有如下两点: while (left < right),这里使用 < ,因为left == right在区间[left, right)是没有意义的; if (nums[middle] > target) right 更新为 middle,因为当前nums[middle]不等于target,去左区间继续寻找,而寻找区间是左闭右开区间,所以right更新为middle;
  比如在数组:1,2,3,4,7,9,10中查找元素2,如图所示:
  class Solution:     def search(self, nums: List[int], target: int) -> int:         left, right = 0, len(nums)  # 定义target在左闭右开的区间里,即:[left, right)         while left < right:  # 因为left == right的时候,在[left, right)是无效的空间,所以使用 <             middle = left + (right - left) // 2             if nums[middle] > target:                 right = middle  # target 在左区间,在[left, middle)中             elif nums[middle] < target:                 left = middle + 1  # target 在右区间,在[middle + 1, right)中             else:                 return middle  # 数组中找到目标值,直接返回下标         return -1  # 未找到目标值题目总结
  二分法是非常重要的基础算法,理解清楚区间的定义,从而更准确的处理边界情况,其时间复杂度为(O (log2n )),再通过一个动图让你加深对二分法的理解。
  相关题目推荐35.搜索插入位置 34. 在排序数组中查找元素的第一个和最后一个位置 69. x 的平方根 367.有效的完全平方数

全新路特斯ELETRE纯电动的SUV对标奢华品牌朋友们大家好,我拍到了全新路特斯ELETRE,这是全新的纯电动豪华SUV,有着较强的运动属性,但是我非常期待它能推出燃油版本的车型。长宽高分别为510320191630mm(车宽不证明国产游戏价值的,不应该只有版号日前,国家新闻出版署公布了9月第五批国产网络游戏审批的消息意料之中,但仍有点不一样。与此前四次不同的是,之前一直缺席的两大头部游戏厂商腾讯网易,也终于出现在本次公布的版号名单中。有2022年新能源车提价大盘点特斯拉调价次数最多,零跑涨幅最大今年以来,新能源汽车迎来了多轮涨价潮,据界面新闻不完全统计,已有28家汽车公司宣布上调新能源汽车价格,过半数公司最高涨价达万元,并且多次宣布涨价。其中造车新势力零跑汽车宣布涨价2至二维码支付将走下舞台?你知道吗?在二维码出现之前,一维码曾经也被广泛应用于各个领域。比如,工业金融医疗卫生与邮电等领域。由于一维码的信息容量很小,如商品上的条形码仅能容纳13位的阿拉伯数字,所以使用范围比亚迪首款元PLUS将登陆印度,全球销量第四的汽车市场内需有多旺盛?比亚迪的出海历程迎来最新进展。9月13日,比亚迪印度电动乘用车业务高级副总裁SanjayGopalakrishnan表示,比亚迪计划进入印度电动汽车市场。同时,比亚迪印度账号发布了V观财报子公司连续两年虚构交易,江特电机被罚60万中新经纬9月14日电江特电机14日晚间公告,收到证监会江西监管局送达的行政处罚事先告知书。2017年至2018年期间,江特电机间接控股子公司宜春银锂新能源有限责任公司(以下简称宜春问界M5EV说实话,我很难输给ModelY自今年3月份首款车型M5开启交付以来,仅6个月的时间,问界累计达成35617辆的交付成绩,增长势头远超早期的新势力玩家蔚小理。在M5和M7之后,问界选择跳出舒适圈,迈入新能源汽车的9。14日晚商品期货布局螺纹钢,焦炭,橡胶,甲醇,玻璃,纯碱等罗堂主论期9。14螺纹钢2301晚盘合约布局罗堂主早盘通知螺纹3700附近一带做多,目前可以看到3700位置支撑暂时得到考验,午盘收盘有急涨现象,综合来说3700位置未来将是个比较总投资将超6000亿!我国首个多能互补大型能源基地群开建电报解读总投资将超6000亿!我国首个多能互补大型能源基地群开建,这家企业在电力多个领域市占率第一,上半年新签合同额超5000亿总投资将超6000亿!我国首个多能互补大型能源基地群开关磁阻电机龙头,科汇股份科创底蕴浓厚,积极布局新能源(报告出品方分析师德邦证券倪正洋)1。行业知名的电力线路故障测试及在线监测专家1。1科创底蕴浓厚,积极布局新能源公司前身是1993年与英国Hathaway公司成立的合资公司淄博科汇存款50万元,每年能获得多少利息?可以不上班靠利息生活吗?如今经济下行压力加大,一些工薪族难以找到称心如意的工作,只得先灵活就业着,走一步算一步,多少有点进项,但大体入不敷出,时不时要动用存款。面对这样的情况,有一笔存款能用来吃利息的话,
重庆渝北让临空展翅迎风起飞渝北区将充分利用好临空优势带来的过往人流,提档升级高端商务商业,加快建成低碳人文国际临空都市区。重庆市渝北区临空办党组成员副主任曹章说。作为全国第四个获批的国家级临空经济示范区,重揭开金字塔的秘密科学家的最新发现古埃及金字塔是古代埃及文明的重要遗产,其庞大的体积和精美的外观一直吸引着游客和历史爱好者的注意。然而,金字塔的建造过程和使用的建筑材料仍然是一个令人着迷的话题。历史背景和建筑材料来用什么方法能够将太阳熄灭?科学家提出5种方法,你认可哪种?在阅读此文前,麻烦您点击一下关注,既方便您进行讨论与分享,又给您带来不一样的参与感,深度长文,希望您能够认真看完,感谢您的支持!现代科学认为,我们的太阳诞生于50亿年前,太阳是从上苦丁茶为什么会先苦后甜?如何购买苦丁茶?泡饮方式你好!我是茶有道道,点击上方关注,我们为你分享健康生活的方方面面。苦丁茶,名实相符,名字是苦的,味道起初也是苦的,喝下去转而甘甜,这样转变是不是很神奇?苦丁茶是归于最苦的茶叶,主要看海听歌踏青小麦岛周末的正确打开方式来啦每到周末,小麦岛的上空都被歌声缭绕。许多音乐爱好者来到这里放声演唱,他们中有职业歌手,但更多的是热爱音乐的普通市民。小麦岛为他们提供了一方舞台,承载起了他们的音乐梦。(青岛日报观海关于吉利银河品牌和首款量产车银河L7你必须了解的四件事2月23日,吉利发布了全新的子品牌吉利银河,这个品牌是专为新能源汽车设立的,无论是定位设计或者渠道,都有全新的表现。在这次发布会上,吉利银河也带来了L7该品牌的第一款量产车型。本文温州首富卸任,留下一个百亿服装帝国花朵财经原创浙江温州是个传奇的地方。人们难以忘记八大王的造就,更难以忘记中国第一张个体工商户营业执照从这里发出。温州首富邱光和的卸任,留下一个百亿服装帝国,更是一代温商人的缩影。敢英雄无敌3世界真奇妙系列(一)酒馆新语都是虎狼之词大家好,我是小辉,欢迎收看英雄无敌5系列文章。世界真奇妙系列,是我新构思的一个系列文章,主要是将脑海中的奇思妙想(胡思乱想)写出来。欢迎大家拍砖。本期主角是酒吧老板。收了可观的小费山东港口机场管理集团成立,能源高速集团重组,下一个是谁在最近几年,山东省在省属国企方面的大动作不断,尤其是在2019年2020年间的新增重组扩员等调整方式一个接一个。例如原山东能源与原兖矿集团的重组山东港口集团成立等都引起了广泛关注和突发!中央工作组出手,这地全行业停产整顿!新能源大案告破逮捕15人!万亿赛道迎巨变,影响多大?这个周末,新能源赛道的重大消息,不断刷屏。首先是,亚洲锂都突然传来重大消息。2月26日,据第一财经报道,近日,中央工作组密集赴江西宜春调研,督导当地锂矿开采,宜春当地锂矿选矿企业目翔业集团与华为联合创新实验室揭牌打造数字孪生机场e公司讯,在第四届中国机场发展大会暨创新成果展上,翔业集团与华为举行联合创新实验室签约和揭牌仪式,携手开拓智慧民航新版图,以数字孪生机场为目标,推进福建智慧机场建设。双方共同研究以