目录
leetcode-浅谈
关于leetcode
leetcode解题主要分为以下两个步骤。
思路
在理解题意之后,我们需要理清解题思路,这道题有哪些解法,使用什么算法,实现算法需要运用哪些数据结构?
当前解题思路中,考虑的是否完备了。特殊情况(0值/NULL值情况,越界等)。
最后考虑下这种解题思路是否能满足时间复杂度和空间复杂度的要求。
如何构造测试用例验证程序。
解题
在有解题思路后,使用编程语言进行实现验证。
总结
实现是思路的基础,如果思路是对的,最后发现自己无法实现,就很尴尬。
leetcode解题基础主要为下面三点。
-
算法实现,每种算法的实现都可总结为模板,实际上多以变体的形式进行运用,但算法原理不变。
-
数据结构使用。高级语言都有自己的数据结构的库函数。熟练使用库函数调用很有必要,减少自己实现的时间。如,数组排序sort函数调用,map/dict根据key或value排序。
-
调试。IDE。
锻炼方法:看某个算法解题思路,看自己是否能实现。
九层之台,起于累土。
以上基础已经打好之后,如何解题是进阶。
-
我怎么知道这道题可以用什么算法?算法使用场景。
-
特殊情况是否都已经考虑了?常见边界,异常情况总结。多构造这类别的测试用例测试。
-
性能空间是否能满足题目要求。需要对算法原理理解透彻。
锻炼方法:随机看一道题,看自己解题思路(算法/完备性)与题解差异。不断积累。
最后,思路与实现结合,不变强都不行。
未来工作
之后,以每种算法为粒度延续本系列博客。介绍算法原理,以及代码实现,最终总结出算法应用场景。
注:仅个人想法,欢迎探讨。