/Algorithm-100-Days

One algorithmic problem every day,Get rid of Rookies。/ 100 天摆脱算法小白

Primary LanguageJavaScript

Algorithm - 100天摆脱算法小白

作者:小浩

说明:我曾发起一个项目 hello-algorithm,从上线到获得 8k star 只用了不到半个月的时间,且登上过 github trending 日榜榜首的位置。但是该项目在我看来却有一定局限性,由于资源性质过重,并不能让大家真正参与进来。同时,也没有系统的给出一套完整的算法训练步骤。在这样的背景下,我重新创建了现在这个项目:Algorithm-100-Days,期望可以提供一套完整的算法训练,并对每一节学习内容都提供了视频

同时该项目也会尽可能的提供算法相关学习资料,包括但不限于:国内外优质算法算法视频(Youtube、Bilibili)、算法相关书籍下载(百度云)、算法面试题目汇总(leetcode、flag、bat)、算法题目源码解析(我会尽可能组织更多的人来提供代码以及代码分析)

最后:所有对该项目有兴趣的人,都可以参与进来,你的任何行为都可以使你成为 contributor。哪怕只是提供一个学习链接!

如何进行学习?

1、通过阅读文档,进行基础知识的学习。

2、通过文档下方的视频链接,进行内容巩固。

3、通过代码,进行提升。

如何运行代码:

第一步:安装依赖文件
npm install
第二步:测试单一文件
npm test -- 'LinkedList'
第三步:测试全部
npm test

提示

数据结构和算法的学习主要在于**的掌握,并不需要纠结语言层面的东西。

难度 A:基础 B:进阶

学习目录 难度 描述
01.数据结构和算法的重要性 A
02.链表 A
03.双向链表 A
04.队列 A
05.栈 A
06.哈希表 A
07.堆 A
08.优先队列 B
09.字典树 B
10.树 A
11.二叉搜索树 A
12.AVL树 B
13.红黑树 B
14.树状数组 B
15.图 A
16.并查集 B
17.布隆过滤器 B
18.笛卡尔积
19.洗牌算法
20.子集
21.排列
22.组合
23.最长公共子序列
24.最长递增子序列
25.最短公共父序列
26.背包问题
27.最大子数列问题
28.组合求和
29.汉明距离
30.莱温斯坦距离
31.KMP
32.Sun./Day
33.字符串快速查找
34.Rabin Karp 算法
35.最长公共子串
36.正则表达式匹配
37.线性搜索
38.跳转搜索
39.二分查找
40.插值搜索
41.冒泡排序
42.选择排序
43.插入排序
44.堆排序
45.归并排序
46.快速排序
47.希尔排序
48.计数排序
49.基数排序
50.链表遍历
51.链表反转
52.树的深搜
53.树的广搜
54.图的深搜
55.图的广搜
56.寻找加权无向图的最小生成树
57.找到图中所有顶点的最短路径
58.找到所有顶点对之间的最短路径
59.判圈算法
60.寻找加权无向图的最小生成树
61.拓扑排序
62.Tarjan算法
63.Fleury算法
64.哈密顿图
65.旅行推销员问题
70.欧几里得算法
71.最小公倍数
72.素数筛
73.判断2次方数
74.杨辉三角形
75.复数
76.弧度和角
77.位操作
78.阶乘
79.斐波那契数
80.素数检测
81.LRU算法
82.八皇后问题
83.骑士巡逻
84.递归楼梯
85.旋转矩阵
86.跳跃游戏
87.雨水收集
88.汉诺塔
89.递推DP
90.背包九讲
91.LIS
92.LCS
93.区间DP
94.树形DP
95.数位DP
96.概率DP
97.状压DP
98.结构DP
99.DP总结
100.毕业证书