Home - acgtyrant/Algorithm-and-Data-Structure GitHub Wiki

Welcome to the Algorithm-and-Data-Structure wiki!

我一直没好好学数据结构与算法,实在惭愧。近日借 Coursera 上的 Algorithm, Part I 之机,开始认真学习,并一一地用主力语言 C++ 实现了它所教的数据结构与算法,从所有 page 名称上可见一番。我还从 LeetCode 上刷题,解答代码和思考过程一样也放到对应的 page 里。此外,我不喜欢 Java, 所以没有 Algorithm, Part I 的 Programming Assignments 代码,以后可能会用 C++ 写吧。

维基重点在于分享我在数据结构与算法上的学习轨迹与思考过程,所以您最好不要指望它会是一本合格的算法教材,相反,应是基于学生视角上对教材(特别是 Algorithm, Part I)的补充,欢迎交流。

有四个维基页面建议按以下顺序阅读,毕竟与 Algorithm, Part 1 的授课顺序比较一致:

  • 二分查找
  • 快速排序
  • 归并排序
  • 堆排序

栈则对应于 Week 2: Stacks and Queues.

链表和数学则都基本只有 LeetCode 上的题解了,毕竟 Algorithm, Part 1 不教。

复数类则是陈硕老师给的一个练习,和算法与数据结构没什么关系,但「类的基本写法」还是要学会的。

此外每个页面有不定的相关 LeetCode 题解,且题解顺序按解题时间递增。如果您想找某题的题解,先看看它的 tag 是什么,再到这里找对应的维基页面,后者一般会有。另外有些页面挺长的,善用 Ctrl-F!

顺便分享下我在学习过程上所发现的好东东:

  • Data Structure and Algorithm notes: 与本维基不同,可能算是有模有样的教材了,还提供英简繁版本;排版用心无比,生成众多可读格式;也有 LeetCode 解答。
  • LeetCode题解: 如同字面上的意思,不过似乎好久没更新了。

如果要说相比之下我写的代码还有什么优点的话,那就是高度吸收了 C++11 特性,御用编程风格优雅无比,性能登峰造极。

顺便一说,我觉得 LeetCode Discuss 里良莠不齐,好多 post 里不光代码风格差,文本排版还丑陋无比,我见过有人把解答代码贴成一行的。

最后,我不会做那些需要揣摩考官心意的垃圾题,只归档了事。