序言
算法作为程序的灵魂,其作用不可言喻,每一个优秀的程序员都需要掌握一些基本的算法和数据结构。而我也将在这里以刷题的方式学习和总结,目的在于加强自我的代码修养。我会用Java和Dart两种语言来实现相关算法题,并将相对权威的解答贴在最后。
算法在计算机科学出现之前就已经存在,而计算机科学的发展需要更多的算法,算法是计算的核心。在开始算法学习之前,我们最好掌握下面几点知识,以便更好的完成后面的学习。
- 至少掌握一门编程语言(用于编码实现算法,这里主要用Java和Dart)
- 一定的数学基础
- 代数(必备:指数、对数㏒、级数∑、函数、不等式、证明方法等)
- 几何(图形算法,便于理解)
- 概率论和数理统计(拔高)
- 高等数学(拔高)
- 离散数学(拔高)
- 掌握常用的数据结构
- 数组
- 栈
- 队列
- 链表
- 树
- 图
- 散列表
- 堆
- 算法复杂度