From b136af62b12b37fada0097466a7c8566dae3c0dd Mon Sep 17 00:00:00 2001 From: labuladong Date: Mon, 2 Mar 2020 19:53:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E4=BA=9B=E5=91=BD?= =?UTF-8?q?=E5=90=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +- ...d => GameProblemsInDynamicProgramming .md} | 0 .../{Seat scheduling.md => Seatscheduling.md} | 0 ...g.md => TheLongestPalindromicSubstring.md} | 0 interview/座位调度.md | 208 ------------------ .../1.png | Bin .../2.png | Bin .../3.png | Bin .../center.png | Bin .../title.png | Bin ...racking.md => DetailsaboutBacktracking.md} | 0 ...arning.md => ThewaytoAlgorithmlearning.md} | 0 workflow.png | Bin 49866 -> 0 bytes 13 files changed, 2 insertions(+), 210 deletions(-) rename dynamic_programming/{Game Problems In Dynamic Programming .md => GameProblemsInDynamicProgramming .md} (100%) rename interview/{Seat scheduling.md => Seatscheduling.md} (100%) rename interview/{The Longest Palindromic Substring.md => TheLongestPalindromicSubstring.md} (100%) delete mode 100644 interview/座位调度.md rename pictures/{双指针 => DoublePointerTechnique}/1.png (100%) rename pictures/{双指针 => DoublePointerTechnique}/2.png (100%) rename pictures/{双指针 => DoublePointerTechnique}/3.png (100%) rename pictures/{双指针 => DoublePointerTechnique}/center.png (100%) rename pictures/{双指针 => DoublePointerTechnique}/title.png (100%) rename think_like_computer/{Details about Backtracking.md => DetailsaboutBacktracking.md} (100%) rename think_like_computer/{The way to Algorithm learning.md => ThewaytoAlgorithmlearning.md} (100%) delete mode 100644 workflow.png diff --git a/README.md b/README.md index 4e8962e..682180d 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,9 @@ 3、**加粗等信息需要保留,同时鼓励扩展自己的知识**,增加参考文献,将重要知识点添加粗体或使用英语(或其他语言)特有的表达形式来表达某些思想。 -4、对于图片,很少包含汉字,如果不影响理解,比如图片右下角的公众号水印,就不必修改了。**如果汉字涉及算法理解,需要把图片一同修改了**,把汉字抹掉换成英文,或者汉字比较少的话,在汉字旁添加对应英文。**对于一些描述题目的图片**,都是我在中文版 LeetCode 上截的图,你可以去英文版 LeetCode 上寻找对应题目截图替换,如果不知道是哪一题,可以要求我给你找。 +4、对于图片,很少包含汉字,如果不影响理解,比如图片右下角的公众号水印,就不必修改了。**如果汉字涉及算法理解,需要把图片一同修改了**,把汉字抹掉换成英文,或者汉字比较少的话,在汉字旁添加对应英文。**对于一些描述题目的图片**,都是我在中文版 LeetCode 上截的图,你可以去英文版 LeetCode 上寻找对应题目截图替换,如果不知道是哪一题,可以在 issue 留言我给你找。原中文 md 文件需要删除。 -5、**保持原有的目录结构,但文件和文件夹的名称应改为英文**,md 文件的名称根据具体文章内容修改成恰当的英文,文章引用的图片路径有时也会包含中文,需要你将装有该图片的文件夹改成适当的英文。 +5、**保持原有的目录结构,但文件和文件夹的名称应改为英文**,md 文件的名称根据具体文章内容修改成恰当的英文(文件名不要带空格),文章引用的图片路径有时也会包含中文,需要你将装有该图片的文件夹改成适当的英文。 6、**只处理在 issue 中约定的文章(和相关的图片),不要动其他任何的内容**,否则后续你对主仓库提交成果的时候,容易出现冲突。如果出现冲突,你需要先想办法使用 Git 工具解决本地仓库和主仓库的版本冲突才能提交 pull request,练习 Git 的使用是非常重要的。 diff --git a/dynamic_programming/Game Problems In Dynamic Programming .md b/dynamic_programming/GameProblemsInDynamicProgramming .md similarity index 100% rename from dynamic_programming/Game Problems In Dynamic Programming .md rename to dynamic_programming/GameProblemsInDynamicProgramming .md diff --git a/interview/Seat scheduling.md b/interview/Seatscheduling.md similarity index 100% rename from interview/Seat scheduling.md rename to interview/Seatscheduling.md diff --git a/interview/The Longest Palindromic Substring.md b/interview/TheLongestPalindromicSubstring.md similarity index 100% rename from interview/The Longest Palindromic Substring.md rename to interview/TheLongestPalindromicSubstring.md diff --git a/interview/座位调度.md b/interview/座位调度.md deleted file mode 100644 index 577d078..0000000 --- a/interview/座位调度.md +++ /dev/null @@ -1,208 +0,0 @@ -# 如何调度考生的座位 - -这是 LeetCode 第 885 题,有趣且具有一定技巧性。这种题目并不像动态规划这类算法拼智商,而是看你对常用数据结构的理解和写代码的水平,个人认为值得重视和学习。 - -另外说句题外话,很多读者都问,算法框架是如何总结出来的,其实框架反而是慢慢从细节里抠出来的。希望大家看了我们的文章之后,最好能抽时间把相关的问题亲自做一做,纸上得来终觉浅,绝知此事要躬行嘛。 - -先来描述一下题目:假设有一个考场,考场有一排共 `N` 个座位,索引分别是 `[0..N-1]`,考生会**陆续**进入考场考试,并且可能在**任何时候**离开考场。 - -你作为考官,要安排考生们的座位,满足:**每当一个学生进入时,你需要最大化他和最近其他人的距离;如果有多个这样的座位,安排到他到索引最小的那个座位**。这很符合实际情况对吧, - -也就是请你实现下面这样一个类: - -```java -class ExamRoom { - // 构造函数,传入座位总数 N - public ExamRoom(int N); - // 来了一名考生,返回你给他分配的座位 - public int seat(); - // 坐在 p 位置的考生离开了 - // 可以认为 p 位置一定坐有考生 - public void leave(int p); -} -``` - -比方说考场有 5 个座位,分别是 `[0..4]`: - -第一名考生进入时(调用 `seat()`),坐在任何位置都行,但是要给他安排索引最小的位置,也就是返回位置 0。 - -第二名学生进入时(再调用 `seat()`),要和旁边的人距离最远,也就是返回位置 4。 - -第三名学生进入时,要和旁边的人距离最远,应该做到中间,也就是座位 2。 - -如果再进一名学生,他可以坐在座位 1 或者 3,取较小的索引 1。 - -以此类推。 - -刚才所说的情况,没有调用 `leave` 函数,不过读者肯定能够发现规律: - -**如果将每两个相邻的考生看做线段的两端点,新安排考生就是找最长的线段,然后让该考生在中间把这个线段「二分」,中点就是给他分配的座位。`leave(p)` 其实就是去除端点 `p`,使得相邻两个线段合并为一个**。 - -核心思路很简单对吧,所以这个问题实际上实在考察你对数据结构的理解。对于上述这个逻辑,你用什么数据结构来实现呢? - -### 一、思路分析 - -根据上述思路,首先需要把坐在教室的学生抽象成线段,我们可以简单的用一个大小为 2 的数组表示。 - -另外,思路需要我们找到「最长」的线段,还需要去除线段,增加线段。 - -**但凡遇到在动态过程中取最值的要求,肯定要使用有序数据结构,我们常用的数据结构就是二叉堆和平衡二叉搜索树了**。二叉堆实现的优先级队列取最值的时间复杂度是 O(logN),但是只能删除最大值。平衡二叉树也可以取最值,也可以修改、删除任意一个值,而且时间复杂度都是 O(logN)。 - -综上,二叉堆不能满足 `leave` 操作,应该使用平衡二叉树。所以这里我们会用到 Java 的一种数据结构 `TreeSet`,这是一种有序数据结构,底层由红黑树维护有序性。 - -这里顺便提一下,一说到集合(Set)或者映射(Map),有的读者可能就想当然的认为是哈希集合(HashSet)或者哈希表(HashMap),这样理解是有点问题的。 - -因为哈希集合/映射底层是由哈希函数和数组实现的,特性是遍历无固定顺序,但是操作效率高,时间复杂度为 O(1)。 - -而集合/映射还可以依赖其他底层数据结构,常见的就是红黑树(一种平衡二叉搜索树),特性是自动维护其中元素的顺序,操作效率是 O(logN)。这种一般称为「有序集合/映射」。 - -我们使用的 `TreeSet` 就是一个有序集合,目的就是为了保持线段长度的有序性,快速查找最大线段,快速删除和插入。 - -### 二、简化问题 - -首先,如果有多个可选座位,需要选择索引最小的座位对吧?**我们先简化一下问题,暂时不管这个要求**,实现上述思路。 - -这个问题还用到一个常用的编程技巧,就是使用一个「虚拟线段」让算法正确启动,这就和链表相关的算法需要「虚拟头结点」一个道理。 - -```java -// 将端点 p 映射到以 p 为左端点的线段 -private Map startMap; -// 将端点 p 映射到以 p 为右端点的线段 -private Map endMap; -// 根据线段长度从小到大存放所有线段 -private TreeSet pq; -private int N; - -public ExamRoom(int N) { - this.N = N; - startMap = new HashMap<>(); - endMap = new HashMap<>(); - pq = new TreeSet<>((a, b) -> { - // 算出两个线段的长度 - int distA = distance(a); - int distB = distance(b); - // 长度更长的更大,排后面 - return distA - distB; - }); - // 在有序集合中先放一个虚拟线段 - addInterval(new int[] {-1, N}); -} - -/* 去除一个线段 */ -private void removeInterval(int[] intv) { - pq.remove(intv); - startMap.remove(intv[0]); - endMap.remove(intv[1]); -} - -/* 增加一个线段 */ -private void addInterval(int[] intv) { - pq.add(intv); - startMap.put(intv[0], intv); - endMap.put(intv[1], intv); -} - -/* 计算一个线段的长度 */ -private int distance(int[] intv) { - return intv[1] - intv[0] - 1; -} -``` - -「虚拟线段」其实就是为了将所有座位表示为一个线段: - -![](../pictures/座位调度/1.jpg) - -有了上述铺垫,主要 API `seat` 和 `leave` 就可以写了: - -```java -public int seat() { - // 从有序集合拿出最长的线段 - int[] longest = pq.last(); - int x = longest[0]; - int y = longest[1]; - int seat; - if (x == -1) { // 情况一 - seat = 0; - } else if (y == N) { // 情况二 - seat = N - 1; - } else { // 情况三 - seat = (y - x) / 2 + x; - } - // 将最长的线段分成两段 - int[] left = new int[] {x, seat}; - int[] right = new int[] {seat, y}; - removeInterval(longest); - addInterval(left); - addInterval(right); - return seat; -} - -public void leave(int p) { - // 将 p 左右的线段找出来 - int[] right = startMap.get(p); - int[] left = endMap.get(p); - // 合并两个线段成为一个线段 - int[] merged = new int[] {left[0], right[1]}; - removeInterval(left); - removeInterval(right); - addInterval(merged); -} -``` - -![三种情况](../pictures/座位调度/2.jpg) - -至此,算法就基本实现了,代码虽多,但思路很简单:找最长的线段,从中间分隔成两段,中点就是 `seat()` 的返回值;找 `p` 的左右线段,合并成一个线段,这就是 `leave(p)` 的逻辑。 - -### 三、进阶问题 - -但是,题目要求多个选择时选择索引最小的那个座位,我们刚才忽略了这个问题。比如下面这种情况会出错: - -![](../pictures/座位调度/3.jpg) - -现在有序集合里有线段 `[0,4]` 和 `[4,9]`,那么最长线段 `longest` 就是后者,按照 `seat` 的逻辑,就会分割 `[4,9]`,也就是返回座位 6。但正确答案应该是座位 2,因为 2 和 6 都满足最大化相邻考生距离的条件,二者应该取较小的。 - -![](../pictures/座位调度/4.jpg) - -**遇到题目的这种要求,解决方式就是修改有序数据结构的排序方式**。具体到这个问题,就是修改 `TreeMap` 的比较函数逻辑: - -```java -pq = new TreeSet<>((a, b) -> { - int distA = distance(a); - int distB = distance(b); - // 如果长度相同,就比较索引 - if (distA == distB) - return b[0] - a[0]; - return distA - distB; -}); -``` - -除此之外,还要改变 `distance` 函数,**不能简单地让它计算一个线段两个端点间的长度,而是让它计算该线段中点和端点之间的长度**。 - -```java -private int distance(int[] intv) { - int x = intv[0]; - int y = intv[1]; - if (x == -1) return y; - if (y == N) return N - 1 - x; - // 中点和端点之间的长度 - return (y - x) / 2; -} -``` - -![](../pictures/座位调度/5.jpg) - -这样,`[0,4]` 和 `[4,9]` 的 `distance` 值就相等了,算法会比较二者的索引,取较小的线段进行分割。到这里,这道算法题目算是完全解决了。 - -### 四、最后总结 - -本文聊的这个问题其实并不算难,虽然看起来代码很多。核心问题就是考察有序数据结构的理解和使用,来梳理一下。 - -处理动态问题一般都会用到有序数据结构,比如平衡二叉搜索树和二叉堆,二者的时间复杂度差不多,但前者支持的操作更多。 - -既然平衡二叉搜索树这么好用,还用二叉堆干嘛呢?因为二叉堆底层就是数组,实现简单啊,详见旧文「二叉堆详解」。你实现个红黑树试试?操作复杂,而且消耗的空间相对来说会多一些。具体问题,还是要选择恰当的数据结构来解决。 - -希望本文对大家有帮助。 - -坚持原创高质量文章,致力于把算法问题讲清楚,欢迎关注我的公众号 labuladong 获取最新文章: - -![labuladong](../pictures/labuladong.jpg) diff --git a/pictures/双指针/1.png b/pictures/DoublePointerTechnique/1.png similarity index 100% rename from pictures/双指针/1.png rename to pictures/DoublePointerTechnique/1.png diff --git a/pictures/双指针/2.png b/pictures/DoublePointerTechnique/2.png similarity index 100% rename from pictures/双指针/2.png rename to pictures/DoublePointerTechnique/2.png diff --git a/pictures/双指针/3.png b/pictures/DoublePointerTechnique/3.png similarity index 100% rename from pictures/双指针/3.png rename to pictures/DoublePointerTechnique/3.png diff --git a/pictures/双指针/center.png b/pictures/DoublePointerTechnique/center.png similarity index 100% rename from pictures/双指针/center.png rename to pictures/DoublePointerTechnique/center.png diff --git a/pictures/双指针/title.png b/pictures/DoublePointerTechnique/title.png similarity index 100% rename from pictures/双指针/title.png rename to pictures/DoublePointerTechnique/title.png diff --git a/think_like_computer/Details about Backtracking.md b/think_like_computer/DetailsaboutBacktracking.md similarity index 100% rename from think_like_computer/Details about Backtracking.md rename to think_like_computer/DetailsaboutBacktracking.md diff --git a/think_like_computer/The way to Algorithm learning.md b/think_like_computer/ThewaytoAlgorithmlearning.md similarity index 100% rename from think_like_computer/The way to Algorithm learning.md rename to think_like_computer/ThewaytoAlgorithmlearning.md diff --git a/workflow.png b/workflow.png deleted file mode 100644 index 69a7499c9baf0dfaad37af293a7a78db86262e3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49866 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