本文针对基础不大行的人,噶。
刷题前一定要先打好数据结构和算法基础,没有基础刷题,寸步难行。
打基础推荐一位宝藏老师(建议2倍速观看):
通过学习建立好自己的知识框架之后,再去刷题。
知识框架要类似于这样
数据结构 | 逻辑结构 | 存储结构 | 常见操作代码实现 | 应用 |
---|---|---|---|---|
线性表 | ... | 顺序存储(线性表,例如数组)、链式存储(链表) | 遍历、查找、添加、删除、合并、倒序... | ... |
树 | ... | 顺序存储、链式存储 | 遍历 | 平衡二叉树、二叉排序树、堆 |
同时要关注这些数据结构在你所使用的语言中是如何实现的,拿JS中的数组举例,学完之后,这些方法你是不是能自己实现呢?
Array.prototype.join()
Array.prototype.keys()
Array.prototype.lastIndexOf()
Array.prototype.map()
Array.of()
Array.prototype.pop()
Array.prototype.push()
Array.prototype.reduce()
Array.prototype.reduceRight()
Array.prototype.reverse()
Array.prototype.shift()
Array.prototype.slice()
Array.prototype.some()
Array.prototype.sort()
Array.prototype.splice()
Array.prototype.toLocaleString()
Array.prototype.toString()
Array.prototype.unshift()
Array.prototype.values()
等你有了完整的知识体系之后,再去刷题。刷题的过程中也是完善自己知识体系的过程。
此外,刷题一开始不建议刷LeetCode,建议先看一本书《算法笔记》,把上面的题做了再去LeetCode,速度会更快。
个人的观点是,LeetCode只适合验证、完善、加深自己的算法水平,不适合一开始学习就使用。