算法就是这么简单(结束篇)

一、背景

大概2018年上半年的时候,我分享过《从零开始学算法系列》,文章如下:

  1. 认识算法
  2. 了解套路长啥样
  3. 排序算法
  4. 二分查找
  5. 万能数组
  6. 链表
  7. 跳表
  8. 需要一点逻辑

这个系列介绍的理论性比较强,需要有一些算法基础的人才能看懂。

于是,2019年上半年,我开始分享《算法就是这么简单》系列。

这个系列涉及的知识比较基础,而且附带了很多算法题。

这里总结一下,大家想学习了,可以按照这个目录来学习练习。

二、数组篇

数组是程序语言中最基础的数据结构,在这个数据结构的基础上,可以衍生出很多问题来。

这里分了五篇文章来介绍数组相关的知识。

  1. 数组就是这么简单
  2. 二维数组就是这么简单
  3. 字符串就是这么简单
  4. 双指针就是这么简单
  5. 数组就是这么简单总结篇

对于数组相关的算法,其实就那么多知识点。

学习之后,剩下的就是多练习了,不然就会发生看着会做,但是最终代码没实现出来。

三、栈与队列

算法题中,最常见的一类问题就是路径搜索题。

比如问一个点是否可以到达另一个点,或者一个点到达另一个点的最优路径是什么。

这些就需要使用栈或队列来解决。

这里分了四篇文章来介绍这个知识点。

  1. 队列理论就是这么简单
  2. 栈理论就是这么简单
  3. 栈DFS就是这么简单
  4. 队列与栈就是这么简单(结束篇)

学习了栈和队列,面对路径最优值问题与是否可以到达问题,你应该就可以快速选择正确的数据结构来解决问题了。

上周 Leetcode 第 141 场比赛的时候,就涉及一个 BFS 最优值问题。

有一个人问我为啥自己答案不对,我一看,他使用 DFS 做的。

使用错误的算法肯定不能得到正确的答案的,什么数据结构有什么样的特征,能够解决什么样的问题我们需要知道的。

当然,这里面涉及到一个因果关系,我在文章里讲了,这里就不赘述了,大家自己去读文章吧。

四、链表

对于链表,其实能够出的算法题就那几种题型,大家学会之后,以后要做的就是灵活变通了。

这里也分了四篇文章来介绍链表这个数据结构。

  1. 单向链表就是这么简单
  2. 面试中必问的几道链表问题
  3. 链表反转与双向链表就是这么简单
  4. 链表的高级应用,不见

五、二叉树

在算法和数据结构中,树相关的算法和数据结构其实有很多的。

而二叉树算是最简单的数据结构了。

这里使用六篇文章来让大家入门二叉树。

  1. 二叉树就是这么简单
  2. 二叉搜索树就是这么简单
  3. 前序、中序、后续构造二叉树
  4. 二叉树每层节点的下一个节点
  5. 二叉树的最近公共祖先并不简单
  6. 程序如何输入一棵树

六、其他

除了上面那种比较集中的算法或数据结构,还有一些比较基础的但是又比较简单的知识点。

比如递归、哈希表、map、二分查找等。

  1. 递归就是这么简单(原理篇)
  2. 递归就是这么简单(结论篇)
  3. 二分查找的高阶应用实战
  4. 教你实现哈希表与LRU缓存库
  5. 请记着 map 这个数据结构

七、最后

算法和数据结构的基础知识已经分享的差不多了。

后面计划分初级、中级、高级三个等级来分别讲解各种数据结构或算法的实践题。

想学算法的,建议自己制定一个固定的时间学习这里分享的算法,等你都可以独立作出来的时候,你应该就可以超越大部分人了。

另外,我做的所有题都会分享在 github 上,也建议你参与我发起的《Leetcode算法互动编程》.

项目地址: https://github.com/tiankonguse/leetcode-solutions

-EOF-

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章