LeetCodeGraphically icon indicating copy to clipboard operation
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 移除链表中出现过多次的节点,解这道题的思路也是「水管思路」,对水管进行拆分,重组。链表中可能出现多个重复节点,需要把这些重复的节点全部干掉

更多算法题,关注公众号超越技术,或者前往博客 超越技术