LeetCodeGraphically
LeetCodeGraphically copied to clipboard
图解 LeetCode 算法,让算法“活”起来

图解 LeetCode 算法,让算法"活"起来。
数据结构和算法是面试非常重要的内容,有些算法非常难以理解,仅靠文字描述很难让读者明白算法思想。如果通过图示的方式来描述算法和数据结构,会形象很多,读者也容易理解算法的真实含义。
这个项目目的是让学习数据结构和算法变得更轻松,我会逐步解析LeetCode上的题目,在学习算法的同时也会讲解设计到的数据结构。
博客地址
公众号
图解算法相关的文章每天都会在公众号发布,欢迎关注我的公众号「超越技术」,和我一同学习!!!
图解排序算法
| 图解排序 1/10 - 冒泡排序 | 冒泡排序是通过比较两个相邻元素的大小实现排序,如果前一个元素大于后一个元素,就交换这两个元素 | ![]() |
|---|---|---|
| 图解排序 2/10 - 插入排序 | 选择排序的核心思想是把一个待排序序列,分成 2 部分,前半部分为有序序列,后半部分为无序序列,遍历后半部分数据,插入到前半部分已经排序好的序列,最终得到一个有序序列 | ![]() |
| 图解排序 3/10 - 希尔排序 | 把一个序列分组,对分组后的内容进行插入排序,这里的分组只是逻辑上的分组,不会重新开辟存储空间 | ![]() |
| 图解排序 4/10 - 快速排序 | 对待排序序列通过一个「支点」(支点就是序列中的一个元素,别把它想的太高大上)进行拆分,使得左边的数据小于支点,右边的数据大于支点。然后把左边和右边再做一次递归,直到递归结束 | ![]() |
| 图解排序 5/10 - 归并排序 | 归并排序,采用分治思想,先把待排序序列拆分成一个个子序列,直到子序列只有一个元素,停止拆分,然后对每个子序列进行边排序边合并 | ![]() |
| 图解排序 6/10 - 堆排序 | 堆排序需要借助于一种数据结构「堆」,注意下文说的都是 「大根堆」。排序的过程中需要不断进行重组堆(heapify 阶段) | ![]() |
| 图解排序 7/10 - 计数排序 | 计数排序的核心思想是把一个无序序列 A 转换成另一个有序序列 B,从 B 中逐个“取出”所有元素,取出的元素即为有序序列 | ![]() |
| 图解排序 8/10 - 桶排序 | 桶排序的核心思想是把数据分到若干个“桶”中,对“桶”中的元素进行排序,最终把“桶”中已排序好的数据合并为一个有序序列。 | ![]() |
| 图解排序 9/10 - 基数排序 | 基数排序是从待排序序列找出可以作为排序的「关键字」,按照「关键字」进行多次排序,最终得到有序序列。 | ![]() |
| 图解排序 10/10 - 选择排序 | 选择排序的思想是,依次从「无序列表」中找到一个最小的元素放到「有序列表」的最后面 | ![]() |
图解LeetCode链表相关算法
| 图解 LeetCode 链表: 83. Remove Duplicates from Sorted List | 给定一个「有序」的链表,去掉重复的节点,每个节点只能出现一次 | ![]() |
|---|---|---|
| 图解 LeetCode 链表: 82. Remove Duplicates from Sorted List II | 移除链表中出现过多次的节点,解这道题的思路也是「水管思路」,对水管进行拆分,重组。链表中可能出现多个重复节点,需要把这些重复的节点全部干掉 | ![]() |
更多算法题,关注公众号超越技术,或者前往博客 超越技术











