Day0 - Are you ready?
Day0 - 你准备好了吗
1. 前言
数据结构与算法一直被认为是一名合格程序员的第零课。
然而在国内 无论是高校内的专注科研的讲师,对于本科生教育纯粹是兴趣使然;还是培训课程的知识量化交易形式的教育;亦或者网上零零散散的碎片知识。我认为对于一名程序员新手都是及其不友好的。在学习数据结构走过很多弯路之后,我决定整合我在数据结构与算法的学习路线,将其提供给感兴趣的朋友们加以学习。
教程的内容主要是整合了以下资源(包括但不限于,如有疏漏,请谅解),如有鄙人有理解不周,请阁下不要惰于知识溯源:
本系列适合:具有至少一门高级语言基础的学习者学习。
由于作者的主语言为C++,所以题解中大部分代码实现为C++。
如果阁下目前 尚未接触过编程 或 希望对C++基础语法进行复习,欢迎阅览 To do!
2. 系列大纲
数据结构基础
基础不牢,地动山摇。要明白我们有哪些武器!
算法基础
什么?你有武器但不会用?
数组专题
数组多简单啊,不就是下标加加减减嘛。
......对不起,二分,双指针,分治......
位运算专题
听说加减乘除都是位运算实现的。感觉在学数电...
动态规划专题
其实课程才刚刚开始...
图专题
图图又闯祸了,你牛爷爷来了。
3. 一些准备工作
3.1. 代码编辑器
优质的本地代码编辑器和C++编译器(如果需要)往往事半功倍。请自行百度/谷歌搜索下载安装教程
推荐的编辑器:
VS Code:轻量级的综合编辑器,可以编辑多种编程语言。
3.2. 搜索引擎和刷题网站
在遇到不会的问题,请立即使用鼠标点击新的标签窗口,在搜索框内描述你遇到的问题,点击回车,找到与你的问题相似的标题的网站,点击进去浏览内容。
另外就是刷题网站,本教程大部分例题来源是 LeetCode 官网,一个优质的刷题网站,大部分例题在上面都可以找到并且可以免费测试和提交代码。
3.3. 笔记软件
我强烈建议各位其实可以Copy一份本教程。边学边将教程内容备份到本地作为学习笔记,而这不仅仅是简单的复制粘贴,你可以在这个基础上自己添加你的感受,你的思路,或者你觉得这个教程讲得不够好的地方,你都可以优化。这当然也是这个版本教程的起源。这样不仅仅能加深你学习的印象,也能够提高你的收获感和满足感。那么我推荐的笔记软件有:
语雀:适用Markdown语法,提供在线或离线存储功能,免费版够用。
Typora:适用Markdown语法,本地存储,需要破解或付费使用。
3.4. 计划表
还有就是规划每天的计划,本课程的内容安排也许不能配合所有学习者的需要,你可以自行规划自己的学习进程,并将他写下来,我相信你有能力做到这件事。
3.5. 自虐变强 or 随遇而安?
对于数据结构与算法的学习不得不说是一场持久仗,很多时候我认为在自学数据结构与算法乃至在自学CS最困难的一点,就是自律。因为没有了DDL,这有时候其实很可怕。特别是随着学习的深入,很多算法的思想其实是相当虐的,但他就是会出现在各个算法竞赛乃至于面试场上,你得有足够的驱动力强迫自己静下心来,思考只有短短三行的代码长达几个小时,阅读几千字的算法描述或代码解释,忍受数个小时的debug时光。而这一切,没有学分,没有绩点,没有老师,没有同学,只有一个信念 —— 你在变强。
4. 3...2...1...开始!
开始奋斗吧!
5. 前言の后记
当你刷完一轮题目之后,你当然直到这里面的题目AC掉的有多少是你参考了题解的,你会知道你的痛点大约在哪些领域。之后就可以针对性的练习。其实笔者十分建议进行题目的二次重做甚至三次重做。自从这个手册制作以来,虽然总时间设置为100days. 但笔者实际在30days内已经能过完一轮,期间还夹杂不少杂事例如一些数模比赛啦,期末周复习啦,相信你能在全力状态下能够超越笔者。
整个笔记的架构我是很满意的,整体难度符合循序渐进。笔者在2024/12/16开始刷题笔记的二次创作,于2025/1/16完成了12个level的数据结构与算法理论基础和力扣刷题训练。其中涉及的题目可以说非常典型。二次笔记创作的形式也成为笔者力推的学习形式之一。然而复盘和Redo的过程也十分重要,具体情况需要具体分析,如果读者和我一样最初不知道四大件具体需要从哪开始学或者学些什么的话,不如现在开始进行数据结构与算法的学习吧!
Last updated