{"id":13490810,"url":"https://github.com/ConardLi/awesome-coding-js","last_synced_at":"2025-03-28T07:31:30.247Z","repository":{"id":37451069,"uuid":"177272363","full_name":"ConardLi/awesome-coding-js","owner":"ConardLi","description":"用JavaScript实现的算法和数据结构，附详细解释和刷题指南","archived":false,"fork":false,"pushed_at":"2024-01-10T02:49:00.000Z","size":5621,"stargazers_count":3227,"open_issues_count":18,"forks_count":511,"subscribers_count":99,"default_branch":"master","last_synced_at":"2024-04-10T10:16:00.154Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ConardLi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-03-23T09:58:00.000Z","updated_at":"2024-04-07T05:34:12.000Z","dependencies_parsed_at":"2024-01-16T02:45:03.658Z","dependency_job_id":"98d9ddc6-eab2-47c0-9149-fa07f51dc940","html_url":"https://github.com/ConardLi/awesome-coding-js","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConardLi%2Fawesome-coding-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConardLi%2Fawesome-coding-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConardLi%2Fawesome-coding-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConardLi%2Fawesome-coding-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ConardLi","download_url":"https://codeload.github.com/ConardLi/awesome-coding-js/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245989101,"owners_count":20705756,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T19:00:51.125Z","updated_at":"2025-03-28T07:31:30.227Z","avatar_url":"https://github.com/ConardLi.png","language":null,"readme":"你好，我是 `世奇`，笔名 `ConardLi`，欢迎来到  `awesome-coding-js` 。\n\n\u003e 写代码 = 数据结构 + 算法 + ...\n\n\u003e 这里有大量算法和数据结构的JavaScript实现\n\n\u003e 基于不同的考察纬度，同一题目可能同时出现在不同分类中。\n\n练好数据结构和算法，非一日之功💪。欢迎`Star`✨或`Watch`👀我们共同进步。\n\n建议做题之前先阅读我这篇文章：[前端该如何准备数据结构和算法](https://juejin.im/post/5d5b307b5188253da24d3cd1)，帮助你更高效的学习。\n\n为了更好的阅读体验可以到：https://www.conardli.top 阅读。\n\n- ⭐⭐：入门\n- ⭐⭐⭐：进阶\n\n## JavaScript专题\n\n- [手动实现call、apply、bind](https://www.conardli.top/docs/JavaScript/手动实现call、apply、bind)\n- [EventEmitter](https://www.conardli.top/docs/JavaScript/EventEmitter)\n- [防抖](https://www.conardli.top/docs/JavaScript/防抖)\n- [节流](https://www.conardli.top/docs/JavaScript/节流)\n- [浅拷贝和深拷贝](https://www.conardli.top/docs/JavaScript/浅拷贝和深拷贝)\n- [数组去重、扁平、最值](https://www.conardli.top/docs/JavaScript/数组去重、扁平、最值)\n- [数组乱序-洗牌算法](https://www.conardli.top/docs/JavaScript/数组乱序-洗牌算法)\n- [函数柯里化](https://www.conardli.top/docs/JavaScript/函数柯里化)\n- [手动实现JSONP](https://www.conardli.top/docs/JavaScript/手动实现JSONP)\n- [模拟实现promise](https://www.conardli.top/docs/JavaScript/模拟实现promise)\n- [手动实现ES5继承](https://www.conardli.top/docs/JavaScript/手动实现ES5继承)\n- [手动实现instanceof](https://www.conardli.top/docs/JavaScript/手动实现instanceof)\n- [基于Promise的ajax封装](https://www.conardli.top/docs/JavaScript/基于Promise的ajax封装)\n- [单例模式](https://www.conardli.top/docs/JavaScript/单例模式)\n- [异步循环打印](https://www.conardli.top/docs/JavaScript/异步循环打印)\n- [图片懒加载](https://www.conardli.top/docs/JavaScript/图片懒加载)\n\n## 排序\n\n- [复杂度](https://www.conardli.top/docs/algorithm/排序/复杂度)\n- [排序-概览](https://www.conardli.top/docs/algorithm/排序/排序)\n- [冒泡排序](https://www.conardli.top/docs/algorithm/排序/冒泡排序)⭐⭐\n- [插入排序](https://www.conardli.top/docs/algorithm/排序/插入排序)⭐⭐\n- [选择排序](https://www.conardli.top/docs/algorithm/排序/选择排序)⭐⭐\n- [堆排序](https://www.conardli.top/docs/algorithm/排序/堆排序)⭐⭐⭐\n- [快速排序](https://www.conardli.top/docs/algorithm/排序/快速排序)⭐⭐⭐\n- [归并排序](https://www.conardli.top/docs/algorithm/排序/归并排序)⭐⭐⭐\n\n## 二叉树\n\n- [二叉树-概览](https://www.conardli.top/docs/dataStructure/二叉树/二叉树)\n- [二叉树的基本操作](https://www.conardli.top/docs/dataStructure/二叉树/二叉树的基本操作)⭐⭐\n- [二叉树的中序遍历](https://www.conardli.top/docs/dataStructure/二叉树/二叉树的中序遍历)⭐⭐\n- [二叉树的前序遍历](https://www.conardli.top/docs/dataStructure/二叉树/二叉树的前序遍历)⭐⭐\n- [二叉树的后序遍历](https://www.conardli.top/docs/dataStructure/二叉树/二叉树的后序遍历)⭐⭐\n- [重建二叉树](https://www.conardli.top/docs/dataStructure/二叉树/重建二叉树)⭐⭐\n- [求二叉树的遍历](https://www.conardli.top/docs/dataStructure/二叉树/重建二叉树.md/#求二叉树的遍历)⭐⭐\n- [对称的二叉树](https://www.conardli.top/docs/dataStructure/二叉树/对称的二叉树)⭐⭐\n- [二叉树的镜像](https://www.conardli.top/docs/dataStructure/二叉树/二叉树的镜像)⭐⭐\n- [二叉搜索树的第k个节点](https://www.conardli.top/docs/dataStructure/二叉树/二叉搜索树的第k个节点)⭐⭐\n- [二叉搜索树的后序遍历](https://www.conardli.top/docs/dataStructure/二叉树/二叉搜索树的后序遍历)⭐⭐\n- [二叉树的最大深度](https://www.conardli.top/docs/dataStructure/二叉树/二叉树的最大深度)⭐⭐\n- [二叉树的最小深度](https://www.conardli.top/docs/dataStructure/二叉树/二叉树的最小深度)⭐⭐\n- [平衡二叉树](https://www.conardli.top/docs/dataStructure/二叉树/平衡二叉树)⭐⭐\n- [不分行从上到下打印二叉树](https://www.conardli.top/docs/dataStructure/二叉树/从上到下打印二叉树.md/#题目1-不分行从上到下打印)⭐⭐\n- [把二叉树打印成多行](https://www.conardli.top/docs/dataStructure/二叉树/从上到下打印二叉树.md/#题目2-把二叉树打印成多行)⭐⭐\n- [二叉树中和为某一值的路径](https://www.conardli.top/docs/dataStructure/二叉树/二叉树中和为某一值的路径)⭐⭐⭐\n- [二叉搜索树与双向链表](https://www.conardli.top/docs/dataStructure/二叉树/二叉搜索树与双向链表)⭐⭐⭐\n- [按之字形顺序打印二叉树](https://www.conardli.top/docs/dataStructure/二叉树/从上到下打印二叉树.md/#题目3-按之字形顺序打印二叉树)⭐⭐⭐\n- [序列化二叉树](https://www.conardli.top/docs/dataStructure/二叉树/序列化二叉树)⭐⭐⭐\n- [二叉树的下一个节点](https://www.conardli.top/docs/dataStructure/二叉树/二叉树的下一个节点)⭐⭐⭐\n- [树的子结构](https://www.conardli.top/docs/dataStructure/二叉树/树的子结构)⭐⭐⭐\n\n## 链表\n\n- [链表-概览](https://www.conardli.top/docs/dataStructure/链表/链表)\n- [删除链表中的节点or重复的节点](https://www.conardli.top/docs/dataStructure/链表/删除链表中的节点or重复的节点)⭐⭐\n- [从尾到头打印链表](https://www.conardli.top/docs/dataStructure/链表/从尾到头打印链表)⭐⭐\n- [链表倒数第k个节点](https://www.conardli.top/docs/dataStructure/链表/链表倒数第k个节点)⭐⭐\n- [反转链表](https://www.conardli.top/docs/dataStructure/链表/反转链表)⭐⭐\n- [复杂链表的复制](https://www.conardli.top/docs/dataStructure/链表/复杂链表的复制)⭐⭐\n- [两个链表的第一个公共节点](https://www.conardli.top/docs/dataStructure/链表/两个链表的第一个公共节点)⭐⭐\n- [圈圈中最后剩下的数字](https://www.conardli.top/docs/dataStructure/链表/圈圈中最后剩下的数字)⭐⭐\n- [链表中环的入口节点](https://www.conardli.top/docs/dataStructure/链表/链表中环的入口节点)⭐⭐⭐\n\n## 字符串\n\n- [替换空格](https://www.conardli.top/docs/dataStructure/字符串/替换空格)⭐⭐\n- [表示数值的字符串](https://www.conardli.top/docs/dataStructure/字符串/表示数值的字符串)⭐⭐\n- [字符流中第一个不重复的字符](https://www.conardli.top/docs/dataStructure/字符串/字符流中第一个不重复的字符)⭐⭐\n- [字符串的排列](https://www.conardli.top/docs/dataStructure/字符串/字符串的排列)⭐⭐\n- [字符串翻转](https://www.conardli.top/docs/dataStructure/字符串/字符串翻转)⭐⭐\n- [正则表达式匹配](https://www.conardli.top/docs/dataStructure/字符串/正则表达式匹配)⭐⭐⭐\n\n## 栈和队列\n\n- [栈和队列-概览](https://www.conardli.top/docs/dataStructure/栈和队列/栈和队列)\n- [用两个栈实现队列](https://www.conardli.top/docs/dataStructure/栈和队列/用两个栈实现队列)⭐⭐\n- [包含min函数的栈](https://www.conardli.top/docs/dataStructure/栈和队列/包含min函数的栈)⭐⭐\n- [栈的压入弹出序列](https://www.conardli.top/docs/dataStructure/栈和队列/栈的压入弹出序列)⭐⭐\n- [滑动窗口的最大值](https://www.conardli.top/docs/dataStructure/栈和队列/滑动窗口的最大值)⭐⭐⭐\n\n## 数组\n\n- [数组-概览](https://www.conardli.top/docs/dataStructure/数组/数组)\n- [调整数组顺序使奇数位于偶数前面](https://www.conardli.top/docs/dataStructure/数组/调整数组顺序使奇数位于偶数前面) ⭐⭐\n- [在排序数组中查找数字](https://www.conardli.top/docs/dataStructure/数组/在排序数组中查找数字)⭐⭐\n- [数组中出现次数超过数组长度一半的数字](https://www.conardli.top/docs/dataStructure/数组/数组中出现次数超过数组长度一半的数字)⭐⭐\n- [连续子数组的最大和](https://www.conardli.top/docs/dataStructure/数组/连续子数组的最大和) ⭐⭐\n- [把数组排成最小的数](https://www.conardli.top/docs/dataStructure/数组/把数组排成最小的数) ⭐⭐\n- [第一个只出现一次的字符](https://www.conardli.top/docs/dataStructure/数组/第一个只出现一次的字符) ⭐⭐\n- [扑克牌顺子](https://www.conardli.top/docs/dataStructure/数组/扑克牌顺子) ⭐⭐\n- [和为S的两个数字](https://www.conardli.top/docs/dataStructure/数组/和为S的两个数字) ⭐⭐\n- [两数之和](https://www.conardli.top/docs/dataStructure/数组/两数之和) ⭐⭐\n- [三数之和](https://www.conardli.top/docs/dataStructure/数组/三数之和) ⭐⭐⭐\n- [四数之和](https://www.conardli.top/docs/dataStructure/数组/四数之和) ⭐⭐⭐\n- [和为S的连续正整数序列](https://www.conardli.top/docs/dataStructure/数组/和为S的连续正整数序列) ⭐⭐⭐\n- [构建乘积数组](https://www.conardli.top/docs/dataStructure/数组/构建乘积数组) ⭐⭐⭐\n- [顺时针打印矩阵](https://www.conardli.top/docs/dataStructure/数组/顺时针打印矩阵) ⭐⭐⭐\n- [数组中的逆序对](https://www.conardli.top/docs/dataStructure/数组/数组中的逆序对)⭐⭐⭐\n\n## 堆\n\n- [堆-概览](https://www.conardli.top/docs/dataStructure/堆/堆)\n- [堆的基本操作](https://www.conardli.top/docs/dataStructure/堆/堆的基本操作)⭐⭐⭐\n- [数据流中的中位数](https://www.conardli.top/docs/dataStructure/堆/数据流中的中位数)⭐⭐⭐\n- [最小的k个数](https://www.conardli.top/docs/dataStructure/堆/最小的k个数)⭐⭐⭐\n\n\n## 哈希表\n\n- [哈希表-概览](https://www.conardli.top/docs/dataStructure/哈希表/哈希表)\n\n## 分治\n\n- [数组中的逆序对](https://www.conardli.top/docs/algorithm/分治/数组中的逆序对)⭐⭐⭐\n\n## 数学运算\n\n- [二进制中1的个数](https://www.conardli.top/docs/algorithm/数学运算/二进制中1的个数)⭐⭐\n- [数值的整数次方](https://www.conardli.top/docs/algorithm/数学运算/数值的整数次方)⭐⭐\n- [数组中只出现一次的数字](https://www.conardli.top/docs/algorithm/数学运算/数组中只出现一次的数字)⭐⭐\n- [不用加减乘除做加法](https://www.conardli.top/docs/algorithm/数学运算/不用加减乘除做加法)⭐⭐\n- [字符串转换成整数](https://www.conardli.top/docs/algorithm/数学运算/字符串转换成整数)⭐⭐\n- [整数中1出现的次数](https://www.conardli.top/docs/algorithm/数学运算/整数中1出现的次数)⭐⭐⭐\n- [1+2+3+...+n](https://www.conardli.top/docs/algorithm/数学运算/1+2+3+...+n)⭐⭐⭐\n- [丑数](https://www.conardli.top/docs/algorithm/数学运算/丑数)⭐⭐⭐\n\n## 查找\n\n- [查找-概览](https://www.conardli.top/docs/algorithm/查找/查找)\n- [二维数组查找](https://www.conardli.top/docs/algorithm/查找/二维数组查找)⭐⭐\n- [在排序数组中查找数字](https://www.conardli.top/docs/algorithm/查找/在排序数组中查找数字)⭐⭐\n- [整数中1出现的次数](https://www.conardli.top/docs/algorithm/查找/整数中1出现的次数)⭐⭐\n\n\n## DFS和BFS\n\n- [DFS和BFS-概览](https://www.conardli.top/docs/algorithm/DFS和BFS/DFS和BFS)\n\n## 递归和循环\n\n- [递归-概览](https://www.conardli.top/docs/algorithm/递归和循环/递归)\n- [斐波拉契数列](https://www.conardli.top/docs/algorithm/递归和循环/斐波拉契数列)⭐⭐\n- [跳台阶](https://www.conardli.top/docs/algorithm/递归和循环/跳台阶)⭐⭐\n- [变态跳台阶](https://www.conardli.top/docs/algorithm/递归和循环/变态跳台阶)⭐⭐\n- [矩形覆盖](https://www.conardli.top/docs/algorithm/递归和循环/矩形覆盖)⭐⭐\n\n## 回溯算法\n\n- [回溯-概览](https://www.conardli.top/docs/algorithm/回溯算法/回溯算法)\n- [二叉树中和为某一值的路径](https://www.conardli.top/docs/algorithm/回溯算法/二叉树中和为某一值的路径)⭐⭐⭐\n- [字符串的排列](https://www.conardli.top/docs/algorithm/回溯算法/字符串的排列)⭐⭐⭐\n- [和为sum的n个数](https://www.conardli.top/docs/algorithm/回溯算法/和为sum的n个数)⭐⭐⭐\n- [矩阵中的路径](https://www.conardli.top/docs/algorithm/回溯算法/矩阵中的路径)⭐⭐⭐\n- [机器人的运动范围](https://www.conardli.top/docs/algorithm/回溯算法/机器人的运动范围)⭐⭐⭐\n- [N皇后问题](https://www.conardli.top/docs/algorithm/回溯算法/N皇后问题)⭐⭐⭐\n- [N皇后问题2](https://www.conardli.top/docs/algorithm/回溯算法/N皇后问题2)⭐⭐⭐\n\n## 动态规划\n\n- [动态规划-概览](https://www.conardli.top/docs/algorithm/动态规划/动态规划)\n- [斐波拉契数列](https://www.conardli.top/docs/algorithm/递归和循环/斐波拉契数列)⭐⭐\n- [最小路径和](https://www.conardli.top/docs/algorithm/动态规划/最小路径和)⭐⭐⭐\n- [打家劫舍](https://www.conardli.top/docs/algorithm/动态规划/打家劫舍)⭐⭐⭐\n\n\n## 贪心算法\n\n- [贪心算法-概览](https://www.conardli.top/docs/algorithm/贪心算法/贪心算法)\n- [分发饼干](https://www.conardli.top/docs/algorithm/贪心算法/分发饼干)⭐⭐\n\n\n## 其他专栏\n\n- 掘金：[ConardLi](https://juejin.cn/user/3949101466785709)\n- 知乎：[ConardLi](https://www.zhihu.com/people/wen-ti-chao-ji-duo-de-xiao-qi)\n- 个人博客：[code秘密花园](https://github.com/ConardLi/ConardLi.github.io/tree/master)\n\n## 联系方式\n\n- 微信：[ConardLi](https://mp.weixin.qq.com/s?__biz=Mzk0MDMwMzQyOA==\u0026mid=2247493407\u0026idx=1\u0026sn=41b8782a3bdc75b211206b06e1929a58\u0026chksm=c2e11234f5969b22a0d7fd50ec32be9df13e2caeef186b30b5d653836b0725def8ccd58a56cf#rd)\n- 公众号：[code秘密花园](https://mp.weixin.qq.com/s?__biz=Mzk0MDMwMzQyOA==\u0026mid=2247493407\u0026idx=1\u0026sn=41b8782a3bdc75b211206b06e1929a58\u0026chksm=c2e11234f5969b22a0d7fd50ec32be9df13e2caeef186b30b5d653836b0725def8ccd58a56cf#rd)\n- Github：https://github.com/ConardLi\n\n\n## 版权声明\n\n\u003ca href=\"http://creativecommons.org/licenses/by-nc/4.0/\"\u003eCC-BY-NC-4.0\u003c/a\u003e LICENSE   \n\n你可以在非商业的前提下免费转载，但同时你必须：明确署名作者：`ConardLi` 以及文章的原始链接。","funding_links":[],"categories":["Others","🌸 感谢","Other Lists","miscellaneous","面试相关"],"sub_categories":["TeX Lists"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FConardLi%2Fawesome-coding-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FConardLi%2Fawesome-coding-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FConardLi%2Fawesome-coding-js/lists"}