算法是一门复杂的学科,不论是算法设计,还是算法实现,或者是算法的正确性证明,算法用例的构造,算法本身的复杂度分析,算法实现的效率,这里面都有很多的技巧。总结下来,可以将算法能力分为下面几个阶段。
- 熟悉常见的算法但不能用简洁的代码快速实现
这里面包括排序算法,堆, 栈,并查集, 查找,树,图,字符串等教科书里面的算法 - 掌握算法设计思想
包括分治思想,动态规划思想, 贪心思想,深度优先,广度优先思想等算法设计思想。能够运用这些思想,针对现实中的问题进行抽象建模。并能够用语言快速简洁的实现 - 在掌握1,2 的基础上,能够针对算法进行实现上的优先,最大化提升算法的执行效率。
- 可以对诸如贪心等算法的正确性进行证明,并能够构造合适,全面的用例,看护算法的正确性。