# awesome-coding-js
**Repository Path**: young-mannix/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**: 0
- **Forks**: 0
- **Created**: 2020-09-15
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## awesome-coding-js
> 写代码 = 数据结构 + 算法 + ...
> 这里有大量算法和数据结构的JavaScript实现
> 基于不同的考察纬度,同一题目可能同时出现在不同分类中。
练好数据结构和算法,非一日之功💪。欢迎`Star`✨或`Watch`👀我们共同进步。
建议做题之前先阅读我这篇文章:[前端该如何准备数据结构和算法](https://juejin.im/post/5d5b307b5188253da24d3cd1),帮助你更高效的学习。
为了更好的阅读体验可以到: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)⭐⭐
- [求二叉树的遍历](/数据结构分类/二叉树/重建二叉树.md/#求二叉树的遍历)⭐⭐
- [对称的二叉树](/数据结构分类/二叉树/对称的二叉树.md)⭐⭐
- [二叉树的镜像](/数据结构分类/二叉树/二叉树的镜像.md)⭐⭐
- [二叉搜索树的第k个节点](/数据结构分类/二叉树/二叉搜索树的第k个节点.md)⭐⭐
- [二叉搜索树的后序遍历](/数据结构分类/二叉树/二叉搜索树的后序遍历.md)⭐⭐
- [二叉树的最大深度](/数据结构分类/二叉树/二叉树的最大深度.md)⭐⭐
- [二叉树的最小深度](/数据结构分类/二叉树/二叉树的最小深度.md)⭐⭐
- [平衡二叉树](/数据结构分类/二叉树/平衡二叉树.md)⭐⭐
- [不分行从上到下打印二叉树](/数据结构分类/二叉树/从上到下打印二叉树.md/#题目1-不分行从上到下打印.md)⭐⭐
- [把二叉树打印成多行](/数据结构分类/二叉树/从上到下打印二叉树.md/#题目2-把二叉树打印成多行.md)⭐⭐
- [二叉树中和为某一值的路径](/数据结构分类/二叉树/二叉树中和为某一值的路径.md)⭐⭐⭐
- [二叉搜索树与双向链表](/数据结构分类/二叉树/二叉搜索树与双向链表.md)⭐⭐⭐
- [按之字形顺序打印二叉树](/数据结构分类/二叉树/从上到下打印二叉树.md/#题目3-按之字形顺序打印二叉树.md)⭐⭐⭐
- [序列化二叉树](/数据结构分类/二叉树/序列化二叉树.md)⭐⭐⭐
- [二叉树的下一个节点](/数据结构分类/二叉树/二叉树的下一个节点.md)⭐⭐⭐
- [树的子结构](/数据结构分类/二叉树/树的子结构.md)⭐⭐⭐
## 链表
- [链表-概览](/数据结构分类/链表/链表.md)
- [删除链表中的节点or重复的节点](/数据结构分类/链表/删除链表中的节点or重复的节点.md)⭐⭐
- [从尾到头打印链表](/数据结构分类/链表/从尾到头打印链表.md)⭐⭐
- [链表倒数第k个节点](/数据结构分类/链表/链表倒数第k个节点.md)⭐⭐
- [反转链表](/数据结构分类/链表/反转链表.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) ⭐⭐
- [扑克牌顺子](/数据结构分类/数组/扑克牌顺子.md) ⭐⭐
- [和为S的两个数字](/数据结构分类/数组/和为S的两个数字.md) ⭐⭐
- [两数之和](/数据结构分类/数组/两数之和.md) ⭐⭐
- [三数之和](/数据结构分类/数组/三数之和.md) ⭐⭐⭐
- [四数之和](/数据结构分类/数组/四数之和.md) ⭐⭐⭐
- [和为S的连续正整数序列](/数据结构分类/数组/和为S的连续正整数序列.md) ⭐⭐⭐
- [构建乘积数组](/数据结构分类/数组/构建乘积数组.md) ⭐⭐⭐
- [顺时针打印矩阵](/数据结构分类/数组/顺时针打印矩阵.md) ⭐⭐⭐
- [数组中的逆序对](/数据结构分类/数组/数组中的逆序对.md)⭐⭐⭐
## 堆
- [堆-概览](/数据结构分类/堆/堆.md)
- [堆的基本操作](/数据结构分类/堆/堆的基本操作.md)⭐⭐⭐
- [数据流中的中位数](/数据结构分类/堆/数据流中的中位数.md)⭐⭐⭐
- [最小的k个数](/数据结构分类/堆/最小的k个数.md)⭐⭐⭐
## 哈希表
- [哈希表-概览](/数据结构分类/哈希表/哈希表.md)
## 分治
- [数组中的逆序对](/算法分类/分治/数组中的逆序对.md)⭐⭐⭐
## 数学运算
- [二进制中1的个数](/算法分类/数学运算/二进制中1的个数.md)⭐⭐
- [数值的整数次方](/算法分类/数学运算/数值的整数次方.md)⭐⭐
- [数组中只出现一次的数字](/算法分类/数学运算/数组中只出现一次的数字.md)⭐⭐
- [不用加减乘除做加法](/算法分类/数学运算/不用加减乘除做加法.md)⭐⭐
- [字符串转换成整数](/算法分类/数学运算/字符串转换成整数.md)⭐⭐
- [整数中1出现的次数](/算法分类/数学运算/整数中1出现的次数.md)⭐⭐⭐
- [1+2+3+...+n](/算法分类/数学运算/1+2+3+...+n.md)⭐⭐⭐
- [丑数](/算法分类/数学运算/丑数.md)⭐⭐⭐
## 查找
- [查找-概览](/算法分类/查找/查找.md)
- [二维数组查找](/算法分类/查找/二维数组查找.md)⭐⭐
- [在排序数组中查找数字](/算法分类/查找/在排序数组中查找数字.md)⭐⭐
- [整数中1出现的次数](/算法分类/查找/整数中1出现的次数.md)⭐⭐
## DFS和BFS
- [DFS和BFS-概览](/算法分类/DFS和BFS/DFS和BFS.md)
## 递归和循环
- [递归-概览](/算法分类/递归和循环/递归.md)
- [斐波拉契数列](/算法分类/递归和循环/斐波拉契数列.md)⭐⭐
- [跳台阶](/算法分类/递归和循环/跳台阶.md)⭐⭐
- [变态跳台阶](/算法分类/递归和循环/变态跳台阶.md)⭐⭐
- [矩形覆盖](/算法分类/递归和循环/矩形覆盖.md)⭐⭐
## 回溯算法
- [回溯-概览](/算法分类/回溯算法/回溯算法.md)
- [二叉树中和为某一值的路径](/算法分类/回溯算法/二叉树中和为某一值的路径.md)⭐⭐⭐
- [字符串的排列](/算法分类/回溯算法/字符串的排列.md)⭐⭐⭐
- [和为sum的n个数](/算法分类/回溯算法/和为sum的n个数.md)⭐⭐⭐
- [矩阵中的路径](/算法分类/回溯算法/矩阵中的路径.md)⭐⭐⭐
- [机器人的运动范围](/算法分类/回溯算法/机器人的运动范围.md)⭐⭐⭐
- [N皇后问题](/算法分类/回溯算法/N皇后问题.md)⭐⭐⭐
- [N皇后问题2](/算法分类/回溯算法/N皇后问题2.md)⭐⭐⭐
## 动态规划
- [动态规划-概览](/算法分类/动态规划/动态规划.md)
- [斐波拉契数列](/算法分类/递归和循环/斐波拉契数列.md)⭐⭐
- [最小路径和](/算法分类/动态规划/最小路径和.md)⭐⭐⭐
- [打家劫舍](/算法分类/动态规划/打家劫舍.md)⭐⭐⭐
## 贪心算法
- [贪心算法-概览](/算法分类/贪心算法/贪心算法.md)
- [分发饼干](/算法分类/贪心算法/分发饼干.md)⭐⭐
## 关于
您还可以在下面的地方关注我,共同学习进步。