力扣算法图解
Java、Python3 语言实现,「专题」教程持续更新中...
「力扣」第 547 题:朋友圈(中等) 「力扣」第 547 题:朋友圈(中等)
「力扣」第 547 题:朋友圈(中等) 并查集的典型问题。题目也非常接地气。 链接 题解链接 班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认
「力扣」第 200 题:岛屿的个数(中等) 「力扣」第 200 题:岛屿的个数(中等)
「力扣」第 200 题:岛屿的个数(中等) 典型的使用「并查集」解决的问题。掌握二维坐标向一位坐标的转换,非常常见。 链接 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。
「力扣」第 130 题:被围绕的区域(中等) 「力扣」第 130 题:被围绕的区域(中等)
「力扣」第 130 题:被围绕的区域(中等) 题目链接 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O)。 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O
「力扣」第 128 题:最长连续序列(困难) 「力扣」第 128 题:最长连续序列(困难)
「力扣」第 128 题:最长连续序列(困难) 这道题因为有判断「是否在并查集」中的需要,因此需要把并查集的底层数组设置为「哈希表」。 链接 给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 $O(n)$。
「并查集」专题 7:quick-union 基于路径压缩的递归实现 「并查集」专题 7:quick-union 基于路径压缩的递归实现
「并查集」专题 7:并查集第 6 版 quick-union 基于路径压缩的递归实现 重点提示:这一节重要。 代码的实现的理解有一些绕。这一版我们实现压缩更彻底的路径压缩。其实我们不看上面的分析,我们想象路径压缩的目的是什么,就是让我们的
「并查集」专题 6:并查集第 5 版 quick-union 基于路径压缩的非递归实现 「并查集」专题 6:并查集第 5 版 quick-union 基于路径压缩的非递归实现
「并查集」专题 6:并查集第 5 版 quick-union 基于路径压缩的非递归实现 重点提示:这一版代码用得最多。因为好理解,且代码量较少。 只用理解这一句即可 parent[p] = parent[parent[p]];,可以称之为「
「并查集」专题 5:并查集第 4 版 quick-union 基于 rank 的优化 「并查集」专题 5:并查集第 4 版 quick-union 基于 rank 的优化
「并查集」专题 5:并查集第 4 版 quick-union 基于 rank 的优化 重点提示:基于 rank 的优化是使用得更多的,因为这样做更合理一些。 但是维护数组 rank 的定义是相对麻烦的,通常的做法就是不维护,只是把数组 ra
「并查集」专题 4:并查集第 3 版 quick-union 基于 size 的优化 「并查集」专题 4:并查集第 3 版 quick-union 基于 size 的优化
「并查集」专题 4:并查集第 3 版 quick-union 基于 size 的优化 重点提示:这一版「并查集」代码是最基本的「并查集」,我们需要学习思想,核心思想是「代表元法」,以「树」的「根结点」作为代表元。 后续我们介绍这一版代码的两
「并查集」专题 3:并查集第 2 版基于 parent 的并查集(非最终版本)(非最终版本) 「并查集」专题 3:并查集第 2 版基于 parent 的并查集(非最终版本)(非最终版本)
「并查集」专题 3:并查集第 2 版基于 parent 的并查集(非最终版本)(非最终版本) 重点提示:这一版「并查集」代码是最基本的「并查集」,我们需要学习思想,核心思想是「代表元法」,以「树」的「根结点」作为代表元。 后续我们介绍这一版
「并查集」专题 2:并查集第 1 版(quick-find 实现) 「并查集」专题 2:并查集第 1 版(quick-find 实现)
「并查集」专题 2:并查集第 1 版(quick-find 实现)重点提示基于 id 的思想类似于:给每个元素改名字,名字一样,就表示在同一个集合中。 优点:查询两个元素是否在一个集合中很快。 缺点:把两个集合合并成一个集合较慢。
2 / 3