# 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)⭐⭐ ## 更新计划 - 贪心算法 - 解题指南-二叉树 - 解题指南-数组 - 解题指南-字符串 - 解题指南-链表 - 解题指南-栈和队列 - 解题指南-哈希表 - 解题指南-平衡树 - 解题指南-图 - 解题指南-堆 - 解题指南-数学 - 解题指南-排序 - 解题指南-查找 - 解题指南-回溯算法 - 解题指南-贪心算法 - 解题指南-分治算法 - 解题指南-动态规划 ## 关于 您还可以在下面的地方关注我,共同学习进步。