这个库主要是记录提高自己算法能力的过程。其中包含一些LeetCode的问题的解法,一些常见的算法的实现,以及一些面试中遇到的算法问题。
随着工作的进行以及学习思考的继续,愈发的觉得写代码的能力很重要,即使是偏向研究的岗位,代码能力也非常的重要。虽然我主要的方向是机器学习方向,但是在做一些机器学习的项目的时候,这个时候的代码能力就决定了你可以把一些机器学习的项目做到什么程度。而且,其实逐渐来看,机器学习其实也像Web开发一样,需要一些系统的架构思维,而我暂时觉得通过一定的代码编写的练习以及思考并且加上实践的经验,才能慢慢的锻炼出一些系统的架构思维。
这个库可以分为如下的几个部分:
这里主要是关于LeetCode上题目的一些解法,其中按照不同的题目类型进行了分组。现在里面有Array部分,Dynamic Programming部分,Hash Table部分,String部分,以及Misc其它部分。其中的每个脚本的名称使用exercise_number.py的形式,number表示题目在LeetCode上的标号。
这一部分主要是关于实践的《Python Algorithms - Mastering Basic Algorithms in the Python Language》,因为平时工作中暂时使用Python的时间比较多,因此这里学习一下这本书,而且最近我发现其实这里面也会讲一点Python语言的一些特点的东西,看起来很轻松,但是也很长知识。
在这部分,主要是在里面记录了一些面试的时候面试官让写的题目,放在problems文件夹下,也当作对自己面试过程的一个记录。
- 大整数加 1 问题 (problems/interview_problems.py)
- 两个大整数相加问题 (problems/interview_problems.py)
- 两个字符串的最长公共子串 (problems/interview_problems.py)
- 两个字符串的最长公共子序列 (problems/interview_problems.py)
- top-K问题 (problems/interview_problems.py)
在外面的一些单独的文件中,会有一些关于图算法的实现,只是凭着自己的想象做的实现,因此有可能存在很多不是很妥当的地方,其中实现的算法有下面几种:
- 图论相关 (graph.py)
- 排序算法 (sort.py)