LeetCode编程训练
LeetCode一个编程训练的网站,上面很多题目常见用于在公司招聘时,作为面试题使用,权衡利弊,有点应试教育的味道。
因为自身专业是电子类,除了大学里学的“数据结构和算法”的基础知识,基本上没有做个什么专门训练,所以也是蠢蠢欲动,提起了“刷题”的心思。我做这些题目的仅仅是为了锻炼一下自己的算法和编程能力,顺便在当下的面试中准备一些筹码。
于是,在这一个月的时间,比较集中精力的重新整理和规划了一下按两步骤进行。
- 数据结构
- 刷题
数据结构
“工欲善其事必先利其器”,在刷题之前我们应该对常见的数据结构有所了解。
个人非常推荐一个学习网站:Hello 算法。 网站的介绍也是非常清楚,怎么使用就不展开说了

在学习数据结构的过程,我们可以结合一些图形化工具帮助我们理解,加深印象。
推荐 Data Structure Visualization

在这个过程中,要特别加重对数组、链表、树的理解,不但是对刷题有帮助,对工作里也有帮助。
实际上,
刷题
刷题的本质就是算法的实现,而****
具体的题目没有价值,昙花一现的技巧也没有价值,成体系、可稳定复现的解题方法论才有价值。
LeetCode常见题型
- 链表
- 数组
- 队列/栈
- 树
对我而言,递归以下的这些算法,尤为复杂,需要有很大思考。
- 递归(深度优先DFS,广度优先BFS)
- 动态规划(Dynamic Programming)
- 分治算法(Divide and Conquer)
- 回溯算法(Back tracing)
- 贪心算法
我觉得每个程序员都应该花点时间和经历来做一做这些编程题,相信我,你一定会从中受益颇多。
以下是我刷了的一些感悟:
- 独立思考
不要一上来就想着要标准答案,有很多事情本事是不存在什么标准答案。在我们长期的求学生涯之中,潜移默化地影响了我们,比如上学的时候,解题的标准答案等,凡是冲着“标准答案”。在你接收一个复杂的需求的时候,是否深入的关注各个环节,预测可能出现的问题,如何预防,出现了该怎么解决,还是一套标准“CRUD”组合拳早早收场,后期被各种线上问题“背刺”。
- 构建自己的方法论
在完成某件事情之后,是否及时总结经验。明明有些题差不多相似,解题步骤也差不多一致,就是代码换了个位置,逆向思路。对于这类相似的题,你是否对其归类,总结出自己的一套解题方案。
- 及时止损
你的状态是否在线? 如果你的状态不好,身体已经很疲惫了,但是大脑还在转,处于一种浑噩的状态,建议你不要做题了,这种状态下也不要进行其他活动了。在工作中也是一样的,如果状态不太对,请先休息,因为这种状态下,你会发现,写代码越来越来乱,没有条例,思考解决需求的思路上,陷入了死胡同。
结尾
希望大家有时间都去练练LeetCode,无论是找工作还是对你的编程能力会有非常大的提高。