# awesome-coding-js
**Repository Path**: FangFengDewall/awesome-coding-js
## Basic Information
- **Project Name**: awesome-coding-js
- **Description**: 用JavaScript实现的算法和数据结构,附详细解释和刷题指南
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2020-05-07
- **Last Updated**: 2021-12-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## awesome-coding-js
> 写代码 = 数据结构 + 算法 + ...
> 这里有大量算法和数据结构的JavaScript实现
> 基于不同的考察纬度,同一题目可能同时出现在不同分类中。
练好数据结构和算法,非一日之功💪。欢迎`Star`✨或`Watch`👀我们共同进步。
为了更好的阅读体验可以到:http://www.conardli.top/docs/ 阅读。
- ⭐⭐:入门
- ⭐⭐⭐:进阶
## 来源分类
- [剑指offer](/剑指offer)
- [leetcode](/leetcode)
## JavaScript专题
- [手动实现call、apply、bind](/JavaScript/手动实现call、apply、bind.md)
- [EventEmitter](/JavaScript/EventEmitter.md)
- [防抖](/JavaScript/防抖.md)
- [节流](/JavaScript/节流.md)
- [浅拷贝和深拷贝](/JavaScript/浅拷贝和深拷贝.md)
- [数组去重、扁平、最值](/JavaScript/数组去重、扁平、最值.md)
- [数组乱序-洗牌算法](/JavaScript/数组乱序-洗牌算法.md)
- [函数柯里化](/JavaScript/函数柯里化.md)
- [手动实现JSONP](/JavaScript/手动实现JSONP.md)
- [模拟实现promise](/JavaScript/模拟实现promise.md)
- [手动实现ES5继承](/JavaScript/手动实现ES5继承.md)
- [手动实现instanceof](/JavaScript/手动实现instanceof.md)
- [基于Promise的ajax封装](/JavaScript/基于Promise的ajax封装.md)
- [单例模式](/JavaScript/单例模式.md)
- [异步循环打印](/JavaScript/异步循环打印.md)
- [图片懒加载](/JavaScript/图片懒加载.md)
## 排序
- [冒泡排序](/算法分类/排序/冒泡排序.md)⭐⭐
- [插入排序](/算法分类/排序/插入排序.md)⭐⭐
- [选择排序](/算法分类/排序/选择排序.md)⭐⭐
- [堆排序](/算法分类/排序/堆排序.md)⭐⭐⭐
- [快速排序](/算法分类/排序/快速排序.md)⭐⭐⭐
- [归并排序](/算法分类/排序/归并排序.md)⭐⭐⭐
## 二叉树
- [二叉树的基本操作](/数据结构分类/二叉树/二叉树的基本操作.md)⭐⭐
- [二叉树的中序遍历](/数据结构分类/二叉树/二叉树的中序遍历.md)⭐⭐
- [二叉树的前序遍历](/数据结构分类/二叉树/二叉树的前序遍历.md)⭐⭐
- [二叉树的后序遍历](/数据结构分类/二叉树/二叉树的后序遍历.md)⭐⭐
- [重建二叉树](/数据结构分类/二叉树/重建二叉树.md)⭐⭐
- [求二叉树的遍历](/数据结构分类/二叉树/重建二叉树.md/#求二叉树的遍历)⭐⭐
- [对称的二叉树](/数据结构分类/二叉树/对称的二叉树.md)⭐⭐
- [二叉树的镜像](/数据结构分类/二叉树/二叉树的镜像.md)⭐⭐
- [二叉搜索树的第k个节点](/数据结构分类/二叉树/二叉搜索树的第k个节点.md)⭐⭐
- [二叉搜索树的后序遍历](/数据结构分类/二叉树/二叉搜索树的后序遍历.md)⭐⭐
- [二叉树的最大深度](/数据结构分类/二叉树/二叉树的最大深度.md)⭐⭐
- [二叉树的最小深度](/数据结构分类/二叉树/二叉树的最小深度.md)⭐⭐
- [平衡二叉树](/数据结构分类/二叉树/平衡二叉树.md)⭐⭐
- [不分行从上到下打印二叉树](/数据结构分类/二叉树/从上到下打印二叉树.md/#题目1-不分行从上到下打印.md)⭐⭐
- [把二叉树打印成多行](/数据结构分类/二叉树/从上到下打印二叉树.md/#题目2-把二叉树打印成多行.md)⭐⭐
- [二叉树中和为某一值的路径](/数据结构分类/二叉树/二叉树中和为某一值的路径.md)⭐⭐⭐
- [二叉搜索树与双向链表](/数据结构分类/二叉树/二叉搜索树与双向链表.md)⭐⭐⭐
- [按之字形顺序打印二叉树](/数据结构分类/二叉树/从上到下打印二叉树.md/#题目3-按之字形顺序打印二叉树.md)⭐⭐⭐
- [序列化二叉树](/数据结构分类/二叉树/序列化二叉树.md)⭐⭐⭐
- [二叉树的下一个节点](/数据结构分类/二叉树/二叉树的下一个节点.md)⭐⭐⭐
- [树的子结构](/数据结构分类/二叉树/树的子结构.md)⭐⭐⭐
## 链表
- [删除链表中的节点or重复的节点](/数据结构分类/链表/删除链表中的节点or重复的节点.md)⭐⭐
- [从尾到头打印链表](/数据结构分类/链表/从尾到头打印链表.md)⭐⭐
- [链表倒数第k个节点](/数据结构分类/链表/链表倒数第k个节点.md)⭐⭐
- [反转链表](/数据结构分类/链表/反转链表.md)⭐⭐
- [复杂链表的复制](/数据结构分类/链表/复杂链表的复制.md)⭐⭐
- [两个链表的第一个公共节点](/数据结构分类/链表/两个链表的第一个公共节点.md)⭐⭐
- [圈圈中最后剩下的数字](/数据结构分类/链表/圈圈中最后剩下的数字.md)⭐⭐
- [链表中环的入口节点](/数据结构分类/链表/链表中环的入口节点.md)⭐⭐⭐
## 字符串
- [替换空格](/数据结构分类/字符串/替换空格.md)⭐⭐
- [表示数值的字符串](/数据结构分类/字符串/表示数值的字符串.md)⭐⭐
- [字符流中第一个不重复的字符](/数据结构分类/字符串/字符流中第一个不重复的字符.md)⭐⭐
- [字符串的排列](/数据结构分类/字符串/字符串的排列.md)⭐⭐
- [字符串翻转](/数据结构分类/字符串/字符串翻转.md)⭐⭐
- [正则表达式匹配](/数据结构分类/字符串/正则表达式匹配.md)⭐⭐⭐
## 栈和队列
- [用两个栈实现队列](/数据结构分类/栈和队列/用两个栈实现队列.md)⭐⭐
- [包含min函数的栈](/数据结构分类/栈和队列/包含min函数的栈.md)⭐⭐
- [栈的压入弹出序列](/数据结构分类/栈和队列/栈的压入弹出序列.md)⭐⭐
- [滑动窗口的最大值](/数据结构分类/栈和队列/滑动窗口的最大值.md)⭐⭐⭐
## 数组
- [调整数组顺序使奇数位于偶数前面](/数据结构分类/数组/调整数组顺序使奇数位于偶数前面.md) ⭐⭐
- [在排序数组中查找数字](/数据结构分类/数组/在排序数组中查找数字.md)⭐⭐
- [数组中出现次数超过数组长度一半的数字](/数据结构分类/数组/数组中出现次数超过数组长度一半的数字.md)⭐⭐
- [连续子数组的最大和](/数据结构分类/数组/连续子数组的最大和.md) ⭐⭐
- [把数组排成最小的数](/数据结构分类/数组/把数组排成最小的数.md) ⭐⭐
- [第一个只出现一次的字符](/数据结构分类/数组/第一个只出现一次的字符.md) ⭐⭐
- [扑克牌顺子](/数据结构分类/数组/扑克牌顺子.md) ⭐⭐
- [和为S的两个数字](/数据结构分类/数组/和为S的两个数字.md) ⭐⭐
- [两数之和](/数据结构分类/数组/两数之和.md) ⭐⭐
- [三数之和](/数据结构分类/数组/三数之和.md) ⭐⭐⭐
- [四数之和](/数据结构分类/数组/四数之和.md) ⭐⭐⭐
- [和为S的连续正整数序列](/数据结构分类/数组/和为S的连续正整数序列.md) ⭐⭐⭐
- [构建乘积数组](/数据结构分类/数组/构建乘积数组.md) ⭐⭐⭐
- [顺时针打印矩阵](/数据结构分类/数组/顺时针打印矩阵.md) ⭐⭐⭐
- [数组中的逆序对](/数据结构分类/数组/数组中的逆序对.md)⭐⭐⭐
## 堆
- [堆的基本操作](/数据结构分类/堆/堆的基本操作.md)⭐⭐⭐
- [数据流中的中位数](/数据结构分类/堆/数据流中的中位数.md)⭐⭐⭐
- [最小的k个数](/数据结构分类/堆/最小的k个数.md)⭐⭐⭐
## 分治
- [数组中的逆序对](/算法分类/分治/数组中的逆序对.md)⭐⭐⭐
## 数学运算
- [二进制中1的个数](/算法分类/数学运算/二进制中1的个数.md)⭐⭐
- [数值的整数次方](/算法分类/数学运算/数值的整数次方.md)⭐⭐
- [数组中只出现一次的数字](/算法分类/数学运算/数组中只出现一次的数字.md)⭐⭐
- [不用加减乘除做加法](/算法分类/数学运算/不用加减乘除做加法.md)⭐⭐
- [字符串转换成整数](/算法分类/数学运算/字符串转换成整数.md)⭐⭐
- [整数中1出现的次数](/算法分类/数学运算/整数中1出现的次数.md)⭐⭐⭐
- [1+2+3+...+n](/算法分类/数学运算/1+2+3+...+n.md)⭐⭐⭐
- [丑数](/算法分类/数学运算/丑数.md)⭐⭐⭐
## 查找
- [二维数组查找](/算法分类/查找/二维数组查找.md)⭐⭐
- [在排序数组中查找数字](/算法分类/查找/在排序数组中查找数字.md)⭐⭐
- [整数中1出现的次数](/算法分类/查找/整数中1出现的次数.md)⭐⭐
## 递归和循环
- [斐波拉契数列](/算法分类/递归和循环/斐波拉契数列.md)⭐⭐
- [跳台阶](/算法分类/递归和循环/跳台阶.md)⭐⭐
- [变态跳台阶](/算法分类/递归和循环/变态跳台阶.md)⭐⭐
- [矩形覆盖](/算法分类/递归和循环/矩形覆盖.md)⭐⭐
## 回溯算法
- [二叉树中和为某一值的路径](/算法分类/回溯算法/二叉树中和为某一值的路径.md)⭐⭐⭐
- [字符串的排列](/算法分类/回溯算法/字符串的排列.md)⭐⭐⭐
- [和为sum的n个数](/算法分类/回溯算法/和为sum的n个数.md)⭐⭐⭐
- [矩阵中的路径](/算法分类/回溯算法/矩阵中的路径.md)⭐⭐⭐
- [机器人的运动范围](/算法分类/回溯算法/机器人的运动范围.md)⭐⭐⭐
- [N皇后问题](/算法分类/回溯算法/N皇后问题.md)⭐⭐⭐
- [N皇后问题2](/算法分类/回溯算法/N皇后问题2.md)⭐⭐⭐
## 动态规划
- [斐波拉契数列](/算法分类/递归和循环/斐波拉契数列.md)⭐⭐
## 更新计划
- 贪心算法
- 解题指南-二叉树
- 解题指南-数组
- 解题指南-字符串
- 解题指南-链表
- 解题指南-栈和队列
- 解题指南-哈希表
- 解题指南-平衡树
- 解题指南-图
- 解题指南-堆
- 解题指南-数学
- 解题指南-排序
- 解题指南-查找
- 解题指南-回溯算法
- 解题指南-贪心算法
- 解题指南-分治算法
- 解题指南-动态规划
## 关于
您还可以在下面的地方关注我,共同学习进步。