第一个月: 基础知识和线性结构
-
学习数据结构基本概念,如数组、链表、栈和队列。
-
理解线性结构的特点和操作,熟悉它们的实现和应用。
-
掌握常见线性结构的时间复杂度和空间复杂度分析。
第二个月: 树与图 -
学习树形结构,包括二叉树、二叉搜索树、平衡二叉树和堆。
-
理解树的遍历算法,包括前序、中序和后序遍历。
-
学习图的基本概念和表示方法,熟悉图的遍历和最短路径算法。
第三个月: 散列和字符串 -
学习散列结构,包括散列表和哈希函数的原理和应用。
-
掌握散列冲突解决方法,如链表法和开放地址法。
-
学习字符串的基本操作和匹配算法,如暴力匹配和KMP算法。
第四个月: 排序和搜索 -
学习各种常见的排序算法,如冒泡排序、插入排序、选择排序、快速排序和归并排序。
-
理解每种排序算法的原理、时间复杂度和稳定性。
-
学习常见的搜索算法,如线性搜索和二分搜索。
第五个月: 动态规划和高级数据结构 -
理解动态规划的基本思想和应用场景。
-
学习动态规划的解题技巧,如状态定义、状态转移方程和子问题划分。
-
探索高级数据结构,如红黑树、B树、Trie树和图的高级算法。
经典面试题
LeetCode 精选 100 道:https://leetcode-cn.com/problem-list/2cktkvj/
LeetCode 精选算法 200 题:https://leetcode-cn.com/problem-list/qg88wci/
文章
刷了 1000 多道算法题,一点心得:https://t.1yb.co/oT9q (鱼皮原创)
在线教程
LeetCode LeetBook:https://leetcode-cn.com/leetbook/
在线刷题
LeetCode:https://leetcode-cn.com/
书籍
⭐《小灰的漫画算法》
⭐《剑指 Offer》
《程序员代码面试指南》
图解算法数据结构:https://leetcode-cn.com/leetbook/detail/illustration-of-algorithm/
LeetCode 101(C++):https://github.com/changgyhub/leetcode_101
LeetCode 题解(C++):https://github.com/soulmachine/leetcode
LeetCode Cookbook(Go 语言):https://github.com/halfrost/LeetCode-Go
视频
尚硅谷 Java 数据结构与算法:https://www.bilibili.com/video/BV1E4411H73v (难度比面试的要求大一些,适合希望更全面学习的朋友)
Leetcode 真题解析:https://www.bilibili.com/video/BV1a54y1b74k
工具
VisuAlgo 数据结构和算法动态可视化:https://visualgo.net/zh
数据结构可视化:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
RegExr:https://www.code-nav.cn/rd/?rid=79550af2601114e9012110711798772b (学习、创建和测试正则表达式的在线可视化工具)
网站
五分钟学算法:https://www.cxyxiaowu.com/