解锁“二分魔法”:让算法题轻松找到答案的秘密(2)

解锁“二分魔法”:让算法题轻松找到答案的秘密(2)

前言:

在算法的世界里,二分法被誉为“魔法”般的存在。这种简单而强大的工具,能够在庞大的解空间中快速找到答案,尤其在复杂的算法题中,往往能化繁为简,带来突破性的思路。然而,掌握二分法不仅仅是了解“左右边界”这么简单,它的精髓在于将问题抽象为“单调性”,进而进行有效的搜索。本文将继续带你解锁二分法的进阶技巧,从实际问题出发,剖析隐藏在算法题背后的二分“魔法”,让你在解题时游刃有余,轻松找到答案!

小编在前文讲述了二分算法的第一个题目,同样也是二分算法的第一个模版,今天小编紧接着上文所说,开始讲述二分算法余下的两个模版,下面开启今日的做题之旅~

1.在排序数组中查找元素的第一个和最后一个的位置

1.1.题目来源

本题和之前的题目一样,源自于力扣,下面小编给出它的链接:34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.2.题目解析

本题是给了我们一个非递减排列的数组以及一个目标值,想让我们在这个数组里面找到一个区间,这个区间里面的数都是目标值所在的数,我们仅需返回它刚开始出现的位置以及结束的位置即可,如果在这个数组里面没有这个数,那么就返回-1和-1即可,为了让各位更好的理解,下面小编就以示例一为例,示例一是想让我们在数组中找到连续8的区间,此时8开始位置是3,所以左边界是3,结束位置是4,所以右边界就是4,此时我们就找到了8所在的区间,就是[3,4],本题就是想要我们实现找到一个数的左边界和右边界,下面小编进入本题目的思路讲解。

1.3.题目思路讲解

通过小编前面讲述的题目解析后,相信部分读者朋友已经知道了本题目的大致内容,此时我们需要分两步来进行本题目的完成,第一步是寻找左端点,第二步是寻找右端点,在这两步中,我们分别可以知晓其中的“二分性”,下面小编先通过左端点的寻找来告诉各位如何寻找左端点。

1.左端点

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于左端点的寻找,我们往往可以分为两个区间进行查找,如上图所示,第一个区间是小于target的部分,第二个区间是大于等于target的部分,这么分的原因是因为此时我们要寻找左端点,左端点是第一个出现的位置,所以我们应该从右边找第一个出现的位置,这样的话寻找起来是比较容易的,此时对于本题目,我们同样也可以设置好两个“指针”,一个在开头,一个在结尾,还需要一个中间值mid,此时的mid求解起来其实是有一个小坑的,对于mid的求法,我们知道有两种方法可以求解mid,如下所示:
1. m i d = = [ l e f t + ( r i g h

评论 82
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值