From 6dcff31360a2191589a0b1e6fefc22d17a88aec1 Mon Sep 17 00:00:00 2001 From: labuladong Date: Wed, 4 Mar 2020 15:06:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8C=BA=E9=97=B4=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BD=9C=E8=80=85=20GYHHAHA=EF=BC=8C=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=B7=B2=E7=BF=BB=E8=AF=91=E7=9A=84=E4=B8=AD=E6=96=87?= =?UTF-8?q?=E6=96=87=E7=AB=A0=EF=BC=8C=E8=A7=84=E8=8C=83=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B9=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/ISSUE_TEMPLATE/bug_report.md | 21 -- .github/ISSUE_TEMPLATE/others.md | 10 - .github/ISSUE_TEMPLATE/translate.md | 31 -- common_knowledge/session和cookie.md | 132 -------- .../递归反转链表的一部分.md | 193 ----------- ...nterval Problem (I) Interval Scheduling.md | 4 + .../double_pointer/{环1.png => cyc1.png} | Bin .../double_pointer/{环2.png => cyc2.png} | Bin pictures/环1.png | Bin 68388 -> 0 bytes pictures/环2.png | Bin 65677 -> 0 bytes .../Interval Problem (II) Interval Merging.md | 6 +- ...val Problem (III) Interval Intersection.md | 7 +- think_like_computer/double_pointer.md | 6 +- think_like_computer/二分查找详解.md | 313 ------------------ 14 files changed, 16 insertions(+), 707 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 .github/ISSUE_TEMPLATE/others.md delete mode 100644 .github/ISSUE_TEMPLATE/translate.md delete mode 100644 common_knowledge/session和cookie.md delete mode 100644 data_structure/递归反转链表的一部分.md rename pictures/double_pointer/{环1.png => cyc1.png} (100%) rename pictures/double_pointer/{环2.png => cyc2.png} (100%) delete mode 100644 pictures/环1.png delete mode 100644 pictures/环2.png delete mode 100644 think_like_computer/二分查找详解.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index df5b188..0000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -name: 发现问题 -about: 我发现了某处链接或者知识点的错误 -title: 'bug ' -labels: bug -assignees: '' - ---- - - - -你好,我发现如下文章有 bug(点击文字可跳转到相关文章): - -[动态规划系列/抢房子.md](https://github.com/labuladong/fucking-algorithm/blob/master/动态规划系列/抢房子.md) - -问题描述: - -某章图片链接失效/其中的 XXX 内容有误/等等。 diff --git a/.github/ISSUE_TEMPLATE/others.md b/.github/ISSUE_TEMPLATE/others.md deleted file mode 100644 index f03e25e..0000000 --- a/.github/ISSUE_TEMPLATE/others.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: 其他issue -about: 我还有一些其他的建议/问题 -title: '' -labels: '' -assignees: '' - ---- - - diff --git a/.github/ISSUE_TEMPLATE/translate.md b/.github/ISSUE_TEMPLATE/translate.md deleted file mode 100644 index 16da565..0000000 --- a/.github/ISSUE_TEMPLATE/translate.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -name: 参与翻译 -about: 我想参与仓库中文章的翻译工作 -title: 'translate ' -labels: translate -assignees: '' - ---- - - - - -我将开始翻译如下文章(点击可查看目标文章): - -[动态规划系列/抢房子.md](https://github.com/labuladong/fucking-algorithm/blob/master/动态规划系列/抢房子.md) - -我准备将它翻译成:**英文** - -**预计 X 天内翻译完成**,若由于种种原因,规定时间已过但此 issue 还未提交 pull request,则此 issue 自动失效。如果你愿意,你可以新开一个 issue 接替我的工作翻译这篇文章。 - - - - - - \ No newline at end of file diff --git a/common_knowledge/session和cookie.md b/common_knowledge/session和cookie.md deleted file mode 100644 index ccabf1b..0000000 --- a/common_knowledge/session和cookie.md +++ /dev/null @@ -1,132 +0,0 @@ -cookie 大家应该都熟悉,比如说登录某些网站一段时间后,就要求你重新登录;再比如有的同学很喜欢玩爬虫技术,有时候网站就是可以拦截住你的爬虫,这些都和 cookie 有关。如果你明白了服务器后端对于 cookie 和 session 的处理逻辑,就可以解释这些现象,甚至钻一些空子无限白嫖,待我慢慢道来。 - -### 一、session 和 cookie 简介 - -cookie 的出现是因为 HTTP 是无状态的一种协议,换句话说,服务器记不住你,可能你每刷新一次网页,就要重新输入一次账号密码进行登录。这显然是让人无法接受的,cookie 的作用就好比服务器给你贴个标签,然后你每次向服务器再发请求时,服务器就能够 cookie 认出你。 - -抽象地概括一下:**一个 cookie 可以认为是一个「变量」,形如 `name=value`,存储在浏览器;一个 session 可以理解为一种数据结构,多数情况是「映射」(键值对),存储在服务器上**。 - -注意,我说的是「一个」cookie 可以认为是一个变量,但是服务器可以一次设置多个 cookie,所以有时候说 cookie 是「一组」键值对儿,这也可以说得通。 - -cookie 可以在服务器端通过 HTTP 的 SetCookie 字段设置 cookie,比如我用 Go 语言写的一个简单服务: - -```go -func cookie(w http.ResponseWriter, r *http.Request) { - // 设置了两个 cookie - http.SetCookie(w, &http.Cookie{ - Name: "name1", - Value: "value1", - }) - - http.SetCookie(w, &http.Cookie{ - Name: "name2", - Value: "value2", - }) - // 将字符串写入网页 - fmt.Fprintln(w, "页面内容") -} -``` - -当浏览器访问对应网址时,通过浏览器的开发者工具查看此次 HTTP 通信的细节,可以看见服务器的回应发出了两次 `SetCookie` 命令: - -![](../pictures/session/1.png) - -在这之后,浏览器的请求中的 `Cookie` 字段就带上了这两个 cookie: - -![](../pictures/session/2.png) - -**cookie 的作用其实就是这么简单,无非就是服务器给每个客户端(浏览器)打的标签**,方便服务器辨认而已。当然,HTTP 还有很多参数可以设置 cookie,比如过期时间,或者让某个 cookie 只有某个特定路径才能使用等等。 - -但问题是,我们也知道现在的很多网站功能很复杂,而且涉及很多的数据交互,比如说电商网站的购物车功能,信息量大,而且结构也比较复杂,无法通过简单的 cookie 机制传递这么多信息,而且要知道 cookie 字段是存储在 HTTP header 中的,就算能够承载这些信息,也会消耗很多的带宽,比较消耗网络资源。 - -session 就可以配合 cookie 解决这一问题,比如说一个 cookie 存储这样一个变量 `sessionID=xxxx`,仅仅把这一个 cookie 传给服务器,然后服务器通过这个 ID 找到对应的 session,这个 session 是一个数据结构,里面存储着该用户的购物车等详细信息,服务器可以通过这些信息返回该用户的定制化网页,有效解决了追踪用户的问题。 - -**session 是一个数据结构,由网站的开发者设计,所以可以承载各种数据**,只要客户端的 cookie 传来一个唯一的 session ID,服务器就可以找到对应的 session,认出这个客户。 - -当然,由于 session 存储在服务器中,肯定会消耗服务器的资源,所以 session 一般都会有一个过期时间,服务器一般会定期检查并删除过期的 session,如果后来该用户再次访问服务器,可能就会面临重新登录等等措施,然后服务器新建一个 session,将 session ID 通过 cookie 的形式传送给客户端。 - -那么,我们知道 cookie 和 session 的原理,有什么切实的好处呢?**除了应对面试,我给你说一个鸡贼的用处,就是可以白嫖某些服务**。 - -有些网站,你第一次使用它的服务,它直接免费让你试用,但是用一次之后,就让你登录然后付费继续使用该服务。而且你发现网站似乎通过某些手段记住了你的电脑,除非你换个电脑或者换个浏览器才能再白嫖一次。 - -那么问题来了,你试用的时候没有登录,网站服务器是怎么记住你的呢?这就很显然了,服务器一定是给你的浏览器打了 cookie,后台建立了对应的 session 记录你的状态。你的浏览器在每次访问该网站的时候都会听话地带着 cookie,服务器一查 session 就知道这个浏览器已经免费使用过了,得让它登录付费,不能让它继续白嫖了。 - -那如果我不让浏览器发送 cookie,每次都伪装成一个第一次来试用的小萌新,不就可以不断白嫖了么?浏览器会把网站的 cookie 以文件的形式存在某些地方(不同的浏览器配置不同),你把他们找到然后删除就行了。但是对于 Firefox 和 Chrome 浏览器,有很多插件可以直接编辑 cookie,比如我的 Chrome 浏览器就用的一款叫做 EditThisCookie 的插件,这是他们官网: - -![http://www.editthiscookie.com/](../pictures/session/3.png) - -这类插件可以读取浏览器在当前网页的 cookie,点开插件可以任意编辑和删除 cookie。**当然,偶尔白嫖一两次还行,不鼓励高频率白嫖,想常用还是掏钱吧,否则网站赚不到钱,就只能取消免费试用这个机制了**。 - -以上就是关于 cookie 和 session 的简单介绍,cookie 是 HTTP 协议的一部分,不算复杂,而 session 是可以定制的,所以下面详细看一下实现 session 管理的代码架构吧。 - -### 二、session 的实现 - -session 的原理不难,但是具体实现它可是很有技巧的,一般需要三个组件配合完成,它们分别是 `Manager`、`Provider` 和 `Session` 三个类(接口)。 - -![](../pictures/session/4.jpg) - -1、浏览器通过 HTTP 协议向服务器请求路径 `/content` 的网页资源,对应路径上有一个 Handler 函数接收请求,解析 HTTP header 中的 cookie,得到其中存储的 sessionID,然后把这个 ID 发给 `Manager`。 - -2、`Manager` 充当一个 session 管理器的角色,主要存储一些配置信息,比如 session 的存活时间,cookie 的名字等等。而所有的 session 存在 `Manager` 内部的一个 `Provider` 中。所以 `Manager` 会把 `sid`(sessionID)传递给 `Provider`,让它去找这个 ID 对应的具体是哪个 session。 - -3、`Provider` 就是一个容器,最常见的应该就是一个散列表,将每个 `sid` 和对应的 session 一一映射起来。收到 `Manager` 传递的 `sid` 之后,它就找到 `sid` 对应的 session 结构,也就是 `Session` 结构,然后返回它。 - -4、`Session` 中存储着用户的具体信息,由 Handler 函数中的逻辑拿出这些信息,生成该用户的 HTML 网页,返回给客户端。 - -那么你也许会问,为什么搞这么麻烦,直接在 Handler 函数中搞一个哈希表,然后存储 `sid` 和 `Session` 结构的映射不就完事儿了? - -**这就是设计层面的技巧了**,下面就来说说,为什么分成 `Manager`、`Provider` 和 `Session`。 - - -先从最底层的 `Session` 说。既然 session 就是键值对,为啥不直接用哈希表,而是要抽象出这么一个数据结构呢? - -第一,因为 `Session` 结构可能不止存储了一个哈希表,还可以存储一些辅助数据,比如 `sid`,访问次数,过期时间或者最后一次的访问时间,这样便于实现想 LRU、LFU 这样的算法。 - -第二,因为 session 可以有不同的存储方式。如果用编程语言内置的哈希表,那么 session 数据就是存储在内存中,如果数据量大,很容易造成程序崩溃,而且一旦程序结束,所有 session 数据都会丢失。所以可以有很多种 session 的存储方式,比如存入缓存数据库 Redis,或者存入 MySQL 等等。 - -因此,`Session` 结构提供一层抽象,屏蔽不同存储方式的差异,只要提供一组通用接口操纵键值对: - -```go -type Session interface { - // 设置键值对 - Set(key, val interface{}) - // 获取 key 对应的值 - Get(key interface{}) interface{} - // 删除键 key - Delete(key interface{}) -} -``` - -再说 `Provider` 为啥要抽象出来。我们上面那个图的 `Provider` 就是一个散列表,保存 `sid` 到 `Session` 的映射,但是实际中肯定会更加复杂。我们不是要时不时删除一些 session 吗,除了设置存活时间之外,还可以采用一些其他策略,比如 LRU 缓存淘汰算法,这样就需要 `Provider` 内部使用哈希链表这种数据结构来存储 session。 - -PS:关于 LRU 算法的奥妙,参见前文「LRU 算法详解」。 - -因此,`Provider` 作为一个容器,就是要屏蔽算法细节,以合理的数据结构和算法组织 `sid` 和 `Session` 的映射关系,只需要实现下面这几个方法实现对 session 的增删查改: - -```go -type Provider interface { - // 新增并返回一个 session - SessionCreate(sid string) (Session, error) - // 删除一个 session - SessionDestroy(sid string) - // 查找一个 session - SessionRead(sid string) (Session, error) - // 修改一个session - SessionUpdate(sid string) - // 通过类似 LRU 的算法回收过期的 session - SessionGC(maxLifeTime int64) -} -``` - - -最后说 `Manager`,大部分具体工作都委托给 `Session` 和 `Provider` 承担了,`Manager` 主要就是一个参数集合,比如 session 的存活时间,清理过期 session 的策略,以及 session 的可用存储方式。`Manager` 屏蔽了操作的具体细节,我们可以通过 `Manager` 灵活地配置 session 机制。 - -综上,session 机制分成几部分的最主要原因就是解耦,实现定制化。我在 Github 上看过几个 Go 语言实现的 session 服务,源码都很简单,有兴趣的朋友可以学习学习: - -https://github.com/alexedwards/scs - -https://github.com/astaxie/build-web-application-with-golang - -坚持原创高质量文章,致力于把算法问题讲清楚,欢迎关注我的公众号 labuladong 获取最新文章: - -![labuladong](../pictures/labuladong.jpg) diff --git a/data_structure/递归反转链表的一部分.md b/data_structure/递归反转链表的一部分.md deleted file mode 100644 index d2500e6..0000000 --- a/data_structure/递归反转链表的一部分.md +++ /dev/null @@ -1,193 +0,0 @@ -# 递归反转链表的一部分 - -反转单链表的迭代实现不是一个困难的事情,但是递归实现就有点难度了,如果再加一点难度,让你仅仅反转单链表中的一部分,你是否能**够递归实现**呢? - -本文就来由浅入深,step by step 地解决这个问题。如果你还不会递归地反转单链表也没关系,**本文会从递归反转整个单链表开始拓展**,只要你明白单链表的结构,相信你能够有所收获。 - -```java -// 单链表节点的结构 -public class ListNode { - int val; - ListNode next; - ListNode(int x) { val = x; } -} -``` - -什么叫反转单链表的一部分呢,就是给你一个索引区间,让你把单链表中这部分元素反转,其他部分不变: - -![](../pictures/%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8/title.png) - -**注意这里的索引是从 1 开始的**。迭代的思路大概是:先用一个 for 循环找到第 `m` 个位置,然后再用一个 for 循环将 `m` 和 `n` 之间的元素反转。但是我们的递归解法不用一个 for 循环,纯递归实现反转。 - -迭代实现思路看起来虽然简单,但是细节问题很多的,反而不容易写对。相反,递归实现就很简洁优美,下面就由浅入深,先从反转整个单链表说起。 - -### 一、递归反转整个链表 - -这个算法可能很多读者都听说过,这里详细介绍一下,先直接看实现代码: - -```java -ListNode reverse(ListNode head) { - if (head.next == null) return head; - ListNode last = reverse(head.next); - head.next.next = head; - head.next = null; - return last; -} -``` - -看起来是不是感觉不知所云,完全不能理解这样为什么能够反转链表?这就对了,这个算法常常拿来显示递归的巧妙和优美,我们下面来详细解释一下这段代码。 - -**对于递归算法,最重要的就是明确递归函数的定义**。具体来说,我们的 `reverse` 函数定义是这样的: - -**输入一个节点 `head`,将「以 `head` 为起点」的链表反转,并返回反转之后的头结点**。 - -明白了函数的定义,在来看这个问题。比如说我们想反转这个链表: - -![](../pictures/%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8/1.jpg) - -那么输入 `reverse(head)` 后,会在这里进行递归: - -```java -ListNode last = reverse(head.next); -``` - -不要跳进递归(你的脑袋能压几个栈呀?),而是要根据刚才的函数定义,来弄清楚这段代码会产生什么结果: - -![](../pictures/%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8/2.jpg) - -这个 `reverse(head.next)` 执行完成后,整个链表就成了这样: - -![](../pictures/%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8/3.jpg) - -并且根据函数定义,`reverse` 函数会返回反转之后的头结点,我们用变量 `last` 接收了。 - -现在再来看下面的代码: - -```java -head.next.next = head; -``` - -![](../pictures/%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8/4.jpg) - -接下来: - -```java -head.next = null; -return last; -``` - -![](../pictures/%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8/5.jpg) - -神不神奇,这样整个链表就反转过来了!递归代码就是这么简洁优雅,不过其中有两个地方需要注意: - -1、递归函数要有 base case,也就是这句: - -```java -if (head.next == null) return head; -``` - -意思是如果链表只有一个节点的时候反转也是它自己,直接返回即可。 - -2、当链表递归反转之后,新的头结点是 `last`,而之前的 `head` 变成了最后一个节点,别忘了链表的末尾要指向 null: - -```java -head.next = null; -``` - -理解了这两点后,我们就可以进一步深入了,接下来的问题其实都是在这个算法上的扩展。 - -### 二、反转链表前 N 个节点 - -这次我们实现一个这样的函数: - -```java -// 将链表的前 n 个节点反转(n <= 链表长度) -ListNode reverseN(ListNode head, int n) -``` - -比如说对于下图链表,执行 `reverseN(head, 3)`: - -![](../pictures/%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8/6.jpg) - -解决思路和反转整个链表差不多,只要稍加修改即可: - -```java -ListNode successor = null; // 后驱节点 - -// 反转以 head 为起点的 n 个节点,返回新的头结点 -ListNode reverseN(ListNode head, int n) { - if (n == 1) { - // 记录第 n + 1 个节点 - successor = head.next; - return head; - } - // 以 head.next 为起点,需要反转前 n - 1 个节点 - ListNode last = reverseN(head.next, n - 1); - - head.next.next = head; - // 让反转之后的 head 节点和后面的节点连起来 - head.next = successor; - return last; -} -``` - -具体的区别: - -1、base case 变为 `n == 1`,反转一个元素,就是它本身,同时**要记录后驱节点**。 - -2、刚才我们直接把 `head.next` 设置为 null,因为整个链表反转后原来的 `head` 变成了整个链表的最后一个节点。但现在 `head` 节点在递归反转之后不一定是最后一个节点了,所以要记录后驱 `successor`(第 n + 1 个节点),反转之后将 `head` 连接上。 - -![](../pictures/%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8/7.jpg) - -OK,如果这个函数你也能看懂,就离实现「反转一部分链表」不远了。 - -### 三、反转链表的一部分 - -现在解决我们最开始提出的问题,给一个索引区间 `[m,n]`(索引从 1 开始),仅仅反转区间中的链表元素。 - -```java -ListNode reverseBetween(ListNode head, int m, int n) -``` - -首先,如果 `m == 1`,就相当于反转链表开头的 `n` 个元素嘛,也就是我们刚才实现的功能: - -```java -ListNode reverseBetween(ListNode head, int m, int n) { - // base case - if (m == 1) { - // 相当于反转前 n 个元素 - return reverseN(head, n); - } - // ... -} -``` - -如果 `m != 1` 怎么办?如果我们把 `head` 的索引视为 1,那么我们是想从第 `m` 个元素开始反转对吧;如果把 `head.next` 的索引视为 1 呢?那么相对于 `head.next`,反转的区间应该是从第 `m - 1` 个元素开始的;那么对于 `head.next.next` 呢…… - -区别于迭代思想,这就是递归思想,所以我们可以完成代码: - -```java -ListNode reverseBetween(ListNode head, int m, int n) { - // base case - if (m == 1) { - return reverseN(head, n); - } - // 前进到反转的起点触发 base case - head.next = reverseBetween(head.next, m - 1, n - 1); - return head; -} -``` - -至此,我们的最终大 BOSS 就被解决了。 - -### 四、最后总结 - -递归的思想相对迭代思想,稍微有点难以理解,处理的技巧是:不要跳进递归,而是利用明确的定义来实现算法逻辑。 - -处理看起来比较困难的问题,可以尝试化整为零,把一些简单的解法进行修改,解决困难的问题。 - -值得一提的是,递归操作链表并不高效。和迭代解法相比,虽然时间复杂度都是 O(N),但是迭代解法的空间复杂度是 O(1),而递归解法需要堆栈,空间复杂度是 O(N)。所以递归操作链表可以作为对递归算法的练习或者拿去和小伙伴装逼,但是考虑效率的话还是使用迭代算法更好。 - -坚持原创高质量文章,致力于把算法问题讲清楚,欢迎关注我的公众号 labuladong 获取最新文章: - -![labuladong](../pictures/labuladong.jpg) diff --git a/dynamic_programming/Interval Problem (I) Interval Scheduling.md b/dynamic_programming/Interval Problem (I) Interval Scheduling.md index 1681b81..6725002 100644 --- a/dynamic_programming/Interval Problem (I) Interval Scheduling.md +++ b/dynamic_programming/Interval Problem (I) Interval Scheduling.md @@ -1,5 +1,9 @@ # Interval Problem (I): Interval Scheduling +**Translator: [GYHHAHA](https://github.com/GYHHAHA)** + +**Author: [labuladong](https://github.com/labuladong)** + What is the greedy algorithm? It can be regarded as a special case of dynamic programming (DP). Compared with DP, using greedy algorithm need to meet more conditions, such as the greedy choosing property, but show more efficiency. For example, supposed that a certain algorithm using enumeration method needs exponential time, if the overlapping subproblems can be solved by DP, then polynomial time is available. Furthermore, if it meets the greedy choosing property, the time complexity can be reduced to a linear level. diff --git a/pictures/double_pointer/环1.png b/pictures/double_pointer/cyc1.png similarity index 100% rename from pictures/double_pointer/环1.png rename to pictures/double_pointer/cyc1.png diff --git a/pictures/double_pointer/环2.png b/pictures/double_pointer/cyc2.png similarity index 100% rename from pictures/double_pointer/环2.png rename to pictures/double_pointer/cyc2.png diff --git a/pictures/环1.png b/pictures/环1.png deleted file mode 100644 index 4ecada73c70f89d6a393f63cb8ceee98a5b620e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68388 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 Z$*f8|^N*zi>wn-+>cbcD647ry{|8u3nGOH| diff --git a/pictures/环2.png b/pictures/环2.png deleted file mode 100644 index 7c8743ae288f3cdeab58d8e76157b17db984a9b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65677 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 diff --git a/think_like_computer/Interval Problem (II) Interval Merging.md b/think_like_computer/Interval Problem (II) Interval Merging.md index 1b4adc4..d493c32 100644 --- a/think_like_computer/Interval Problem (II) Interval Merging.md +++ b/think_like_computer/Interval Problem (II) Interval Merging.md @@ -1,5 +1,9 @@ # Interval Problem (II): Interval Merging +**Translator: [GYHHAHA](https://github.com/GYHHAHA)** + +**Author: [labuladong](https://github.com/labuladong)** + In the "Interval Scheduling: Greedy Algorithm", we use greedy algorithm to solve the interval scheduling problem, which means, given a lot of intervals, finding out the maximum subset without any overlapping. Actually, there are many other relating problems about interval itself. Now, we will talk about the "Merge Interval Problem". @@ -82,5 +86,3 @@ It will be illustrated more clearly by the follow gif. So far, the Interval Merging Problem have been solved. The End. Hope this article can help you! - -![labuladong](../pictures/labuladong.jpg) diff --git a/think_like_computer/Interval Problem (III) Interval Intersection.md b/think_like_computer/Interval Problem (III) Interval Intersection.md index 35b30f4..4b88df3 100644 --- a/think_like_computer/Interval Problem (III) Interval Intersection.md +++ b/think_like_computer/Interval Problem (III) Interval Intersection.md @@ -1,5 +1,10 @@ # Interval Problem (III): Interval Intersection + +**Translator: [GYHHAHA](https://github.com/GYHHAHA)** + +**Author: [labuladong](https://github.com/labuladong)** + This is the third article about the interval problem, and the last two articles respectively introduce the interval scheduling problem and the interval merging problem. Now, we will talk about the topic about how to find out interval intersection from two set of intervals efficiently. 【Leetcode 986】Interval List Intersections @@ -124,5 +129,3 @@ def intervalIntersection(A, B): ``` To give a brief summary, although the problem concerning intervals seems to be complicated, we can still use simple code to finish the task by observe common features between different situation. - -![labuladong](../pictures/labuladong.jpg) diff --git a/think_like_computer/double_pointer.md b/think_like_computer/double_pointer.md index c078209..c1127cd 100644 --- a/think_like_computer/double_pointer.md +++ b/think_like_computer/double_pointer.md @@ -69,13 +69,13 @@ It can be seen that when the "fast" and "slow" pointers meet, let any one of the For the first encounter, suppose the slow pointer "slow" moves k steps, then the fast pointer "fast" must move 2k steps, which means that "fast" moves k steps more than "slow" (The length of the ring) -![4](../pictures/double_pointer/22.png) +![4](../pictures/double_pointer/cyc1.png) Suppose the distance between the meeting point and the start point of the ring is m, then the distance between the start point of the ring and the head node "head" is k-m. Coincidentally, if we continue to k-m steps from the meeting point, we also reach the starting point of the loop. -![5](../pictures/double_pointer/33.png) +![5](../pictures/double_pointer/cyc2.png) So, as long as we repoint one of the fast and slow pointers to "head", and then the two pointers move at the same speed, we will meet after k-m steps. The place where we meet is the beginning of the ring. @@ -93,7 +93,7 @@ return slow; ``` When the length of the linked list is odd, "slow" happens to stop at the midpoint; if the length is even, the final position of "slow" is right to the middle: -![2](../pictures/double_pointer/44.png) +![2](../pictures/double_pointer/22.png) An important role in finding the midpoint of a linked list is to "merge sort" the linked list. diff --git a/think_like_computer/二分查找详解.md b/think_like_computer/二分查找详解.md deleted file mode 100644 index 678d5de..0000000 --- a/think_like_computer/二分查找详解.md +++ /dev/null @@ -1,313 +0,0 @@ -# 二分查找详解 - -先给大家讲个笑话乐呵一下: - -有一天阿东到图书馆借了 N 本书,出图书馆的时候,警报响了,于是保安把阿东拦下,要检查一下哪本书没有登记出借。阿东正准备把每一本书在报警器下过一下,以找出引发警报的书,但是保安露出不屑的眼神:你连二分查找都不会吗?于是保安把书分成两堆,让第一堆过一下报警器,报警器响;于是再把这堆书分成两堆…… 最终,检测了 logN 次之后,保安成功的找到了那本引起警报的书,露出了得意和嘲讽的笑容。于是阿东背着剩下的书走了。 - -从此,图书馆丢了 N - 1 本书。 - -二分查找真的很简单吗?并不简单。看看 Knuth 大佬(发明 KMP 算法的那位)怎么说的: - -Although the basic idea of binary search is comparatively straightforward, the details can be surprisingly tricky..、 - -这句话可以这样理解:**思路很简单,细节是魔鬼。** - -本文就来探究几个最常用的二分查找场景:寻找一个数、寻找左侧边界、寻找右侧边界。而且,我们就是要深入细节,比如不等号是否应该带等号,mid 是否应该加一等等。分析这些细节的差异以及出现这些差异的原因,保证你能灵活准确地写出正确的二分查找算法。 - -### 零、二分查找框架 - -```java -int binarySearch(int[] nums, int target) { - int left = 0, right = ...; - - while(...) { - int mid = (right + left) / 2; - if (nums[mid] == target) { - ... - } else if (nums[mid] < target) { - left = ... - } else if (nums[mid] > target) { - right = ... - } - } - return ...; -} -``` - -**分析二分查找的一个技巧是:不要出现 else,而是把所有情况用 else if 写清楚,这样可以清楚地展现所有细节**。本文都会使用 else if,旨在讲清楚,读者理解后可自行简化。 - -其中 `...` 标记的部分,就是可能出现细节问题的地方,当你见到一个二分查找的代码时,首先注意这几个地方。后文用实例分析这些地方能有什么样的变化。 - -另外声明一下,计算 mid 时需要技巧防止溢出,可以「参见前文」,本文暂时忽略这个问题。 - - -### 一、寻找一个数(基本的二分搜索) - -这个场景是最简单的,肯能也是大家最熟悉的,即搜索一个数,如果存在,返回其索引,否则返回 -1。 - -```java -int binarySearch(int[] nums, int target) { - int left = 0; - int right = nums.length - 1; // 注意 - - while(left <= right) { - int mid = (right + left) / 2; - if(nums[mid] == target) - return mid; - else if (nums[mid] < target) - left = mid + 1; // 注意 - else if (nums[mid] > target) - right = mid - 1; // 注意 - } - return -1; -} -``` - -1、为什么 while 循环的条件中是 <=,而不是 < ? - -答:因为初始化 right 的赋值是 nums.length - 1,即最后一个元素的索引,而不是 nums.length。 - -这二者可能出现在不同功能的二分查找中,区别是:前者相当于两端都闭区间 [left, right],后者相当于左闭右开区间 [left, right),因为索引大小为 nums.length 是越界的。 - -我们这个算法中使用的是前者 [left, right] 两端都闭的区间。**这个区间其实就是每次进行搜索的区间**。 - -什么时候应该停止搜索呢?当然,找到了目标值的时候可以终止: - -```java - if(nums[mid] == target) - return mid; -``` - -但如果没找到,就需要 while 循环终止,然后返回 -1。那 while 循环什么时候应该终止?**搜索区间为空的时候应该终止**,意味着你没得找了,就等于没找到嘛。 - -`while(left <= right)` 的终止条件是 left == right + 1,写成区间的形式就是 [right + 1, right],或者带个具体的数字进去 [3, 2],可见**这时候区间为空**,因为没有数字既大于等于 3 又小于等于 2 的吧。所以这时候 while 循环终止是正确的,直接返回 -1 即可。 - -`while(left < right)` 的终止条件是 left == right,写成区间的形式就是 [left, right],或者带个具体的数字进去 [2, 2],**这时候区间非空**,还有一个数 2,但此时 while 循环终止了。也就是说这区间 [2, 2] 被漏掉了,索引 2 没有被搜索,如果这时候直接返回 -1 就是错误的。 - -当然,如果你非要用 while(left < right) 也可以,我们已经知道了出错的原因,就打个补丁好了: - -```java - //... - while(left < right) { - // ... - } - return nums[left] == target ? left : -1; -``` - - -2、为什么 left = mid + 1,right = mid - 1?我看有的代码是 right = mid 或者 left = mid,没有这些加加减减,到底怎么回事,怎么判断? - -答:这也是二分查找的一个难点,不过只要你能理解前面的内容,就能够很容易判断。 - -刚才明确了「搜索区间」这个概念,而且本算法的搜索区间是两端都闭的,即 [left, right]。那么当我们发现索引 mid 不是要找的 target 时,如何确定下一步的搜索区间呢? - -当然是 [left, mid - 1] 或者 [mid + 1, right] 对不对?因为 mid 已经搜索过,应该从搜索区间中去除。 - -3、此算法有什么缺陷? - -答:至此,你应该已经掌握了该算法的所有细节,以及这样处理的原因。但是,这个算法存在局限性。 - -比如说给你有序数组 nums = [1,2,2,2,3],target = 2,此算法返回的索引是 2,没错。但是如果我想得到 target 的左侧边界,即索引 1,或者我想得到 target 的右侧边界,即索引 3,这样的话此算法是无法处理的。 - -这样的需求很常见。你也许会说,找到一个 target,然后向左或向右线性搜索不行吗?可以,但是不好,因为这样难以保证二分查找对数级的复杂度了。 - -我们后续的算法就来讨论这两种二分查找的算法。 - - -### 二、寻找左侧边界的二分搜索 - -直接看代码,其中的标记是需要注意的细节: - -```java -int left_bound(int[] nums, int target) { - if (nums.length == 0) return -1; - int left = 0; - int right = nums.length; // 注意 - - while (left < right) { // 注意 - int mid = (left + right) / 2; - if (nums[mid] == target) { - right = mid; - } else if (nums[mid] < target) { - left = mid + 1; - } else if (nums[mid] > target) { - right = mid; // 注意 - } - } - return left; -} -``` - -1、为什么 while(left < right) 而不是 <= ? - -答:用相同的方法分析,因为 right = nums.length 而不是 nums.length - 1 。因此每次循环的「搜索区间」是 [left, right) 左闭右开。 - -while(left < right) 终止的条件是 left == right,此时搜索区间 [left, left) 为空,所以可以正确终止。 - -2、为什么没有返回 -1 的操作?如果 nums 中不存在 target 这个值,怎么办? - -答:因为要一步一步来,先理解一下这个「左侧边界」有什么特殊含义: - -![](../pictures/%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE/binarySearch1.png) - -对于这个数组,算法会返回 1。这个 1 的含义可以这样解读:nums 中小于 2 的元素有 1 个。 - -比如对于有序数组 nums = [2,3,5,7], target = 1,算法会返回 0,含义是:nums 中小于 1 的元素有 0 个。 - -再比如说 nums 不变,target = 8,算法会返回 4,含义是:nums 中小于 8 的元素有 4 个。 - -综上可以看出,函数的返回值(即 left 变量的值)取值区间是闭区间 [0, nums.length],所以我们简单添加两行代码就能在正确的时候 return -1: - -```java -while (left < right) { - //... -} -// target 比所有数都大 -if (left == nums.length) return -1; -// 类似之前算法的处理方式 -return nums[left] == target ? left : -1; -``` - -1、为什么 left = mid + 1,right = mid ?和之前的算法不一样? - -答:这个很好解释,因为我们的「搜索区间」是 [left, right) 左闭右开,所以当 nums[mid] 被检测之后,下一步的搜索区间应该去掉 mid 分割成两个区间,即 [left, mid) 或 [mid + 1, right)。 - -4、为什么该算法能够搜索左侧边界? - -答:关键在于对于 nums[mid] == target 这种情况的处理: - -```java - if (nums[mid] == target) - right = mid; -``` - -可见,找到 target 时不要立即返回,而是缩小「搜索区间」的上界 right,在区间 [left, mid) 中继续搜索,即不断向左收缩,达到锁定左侧边界的目的。 - -5、为什么返回 left 而不是 right? - -答:都是一样的,因为 while 终止的条件是 left == right。 - - -### 三、寻找右侧边界的二分查找 - -寻找右侧边界和寻找左侧边界的代码差不多,只有两处不同,已标注: - -```java -int right_bound(int[] nums, int target) { - if (nums.length == 0) return -1; - int left = 0, right = nums.length; - - while (left < right) { - int mid = (left + right) / 2; - if (nums[mid] == target) { - left = mid + 1; // 注意 - } else if (nums[mid] < target) { - left = mid + 1; - } else if (nums[mid] > target) { - right = mid; - } - } - return left - 1; // 注意 -} -``` - -1、为什么这个算法能够找到右侧边界? - -答:类似地,关键点还是这里: - -```java - if (nums[mid] == target) { - left = mid + 1; -``` - -当 nums[mid] == target 时,不要立即返回,而是增大「搜索区间」的下界 left,使得区间不断向右收缩,达到锁定右侧边界的目的。 - -2、为什么最后返回 left - 1 而不像左侧边界的函数,返回 left?而且我觉得这里既然是搜索右侧边界,应该返回 right 才对。 - -答:首先,while 循环的终止条件是 left == right,所以 left 和 right 是一样的,你非要体现右侧的特点,返回 right - 1 好了。 - -至于为什么要减一,这是搜索右侧边界的一个特殊点,关键在这个条件判断: - -```java - if (nums[mid] == target) { - left = mid + 1; - // 这样想: mid = left - 1 -``` - -![](../pictures/%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE/binarySearch2.png) - -因为我们对 left 的更新必须是 left = mid + 1,就是说 while 循环结束时,nums[left] 一定不等于 target 了,而 nums[left-1] 可能是 target。 - -至于为什么 left 的更新必须是 left = mid + 1,同左侧边界搜索,就不再赘述。 - -1、为什么没有返回 -1 的操作?如果 nums 中不存在 target 这个值,怎么办? - -答:类似之前的左侧边界搜索,因为 while 的终止条件是 left == right,就是说 left 的取值范围是 [0, nums.length],所以可以添加两行代码,正确地返回 -1: - -```java -while (left < right) { - // ... -} -if (left == 0) return -1; -return nums[left-1] == target ? (left-1) : -1; -``` - -### 四、最后总结 - -来梳理一下这些细节差异的因果逻辑: - -第一个,最基本的二分查找算法: - -```python -因为我们初始化 right = nums.length - 1 -所以决定了我们的「搜索区间」是 [left, right] -所以决定了 while (left <= right) -同时也决定了 left = mid+1 和 right = mid-1 - -因为我们只需找到一个 target 的索引即可 -所以当 nums[mid] == target 时可以立即返回 -``` - -第二个,寻找左侧边界的二分查找: - -```python -因为我们初始化 right = nums.length -所以决定了我们的「搜索区间」是 [left, right) -所以决定了 while (left < right) -同时也决定了 left = mid + 1 和 right = mid - -因为我们需找到 target 的最左侧索引 -所以当 nums[mid] == target 时不要立即返回 -而要收紧右侧边界以锁定左侧边界 -``` - -第三个,寻找右侧边界的二分查找: - -```python -因为我们初始化 right = nums.length -所以决定了我们的「搜索区间」是 [left, right) -所以决定了 while (left < right) -同时也决定了 left = mid + 1 和 right = mid - -因为我们需找到 target 的最右侧索引 -所以当 nums[mid] == target 时不要立即返回 -而要收紧左侧边界以锁定右侧边界 - -又因为收紧左侧边界时必须 left = mid + 1 -所以最后无论返回 left 还是 right,必须减一 -``` - -如果以上内容你都能理解,那么恭喜你,二分查找算法的细节不过如此。 - -通过本文,你学会了: - -1、分析二分查找代码时,不要出现 else,全部展开成 else if 方便理解。 - -2、注意「搜索区间」和 while 的终止条件,如果存在漏掉的元素,记得在最后检查。 - -3、如需要搜索左右边界,只要在 nums[mid] == target 时做修改即可。搜索右侧时需要减一。 - - -呵呵,此文对二分查找的问题无敌好吧!**致力于把算法讲清楚!欢迎关注我的微信公众号 labuladong,查看更多通俗易懂的文章**: - -![labuladong](../pictures/labuladong.png) \ No newline at end of file