{"id":13492519,"url":"https://github.com/Sunny-117/js-challenges","last_synced_at":"2025-03-28T10:32:22.546Z","repository":{"id":62634444,"uuid":"534649275","full_name":"Sunny-117/js-challenges","owner":"Sunny-117","description":"✨✨✨ Challenge your JavaScript programming limits step by step","archived":false,"fork":false,"pushed_at":"2024-10-22T03:11:08.000Z","size":2479,"stargazers_count":2009,"open_issues_count":435,"forks_count":236,"subscribers_count":14,"default_branch":"main","last_synced_at":"2024-10-23T04:47:13.778Z","etag":null,"topics":["html-css-javascript","javascript","nodejs","promise","react","typescript","vuejs"],"latest_commit_sha":null,"homepage":"https://juejin.cn/column/7244788137410560055","language":"JavaScript","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/Sunny-117.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2022-09-09T13:15:12.000Z","updated_at":"2024-10-22T03:11:12.000Z","dependencies_parsed_at":"2022-11-04T09:33:38.330Z","dependency_job_id":"d792a7fa-0b12-44b2-832f-a476fdc73bdd","html_url":"https://github.com/Sunny-117/js-challenges","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sunny-117%2Fjs-challenges","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sunny-117%2Fjs-challenges/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sunny-117%2Fjs-challenges/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sunny-117%2Fjs-challenges/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sunny-117","download_url":"https://codeload.github.com/Sunny-117/js-challenges/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222369833,"owners_count":16973287,"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":["html-css-javascript","javascript","nodejs","promise","react","typescript","vuejs"],"created_at":"2024-07-31T19:01:06.776Z","updated_at":"2024-10-31T06:31:19.344Z","avatar_url":"https://github.com/Sunny-117.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","面试系列"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eWelcome to js-challenges 👋\u003c/h1\u003e\n\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"./js-challenges-logo.png\"\u003e\u003c/img\u003e\n\u003c/h1\u003e\n\n\u003cp\u003e\n  \u003cimg alt=\"Version\" src=\"https://img.shields.io/badge/version-1.0.0-blue.svg?cacheSeconds=2592000\" /\u003e\n  \u003ca href=\"https://github.com/Sunny-117/js-challenges\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Documentation\" src=\"https://img.shields.io/badge/documentation-yes-brightgreen.svg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://zh.wikipedia.org/zh-cn/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89\" target=\"_blank\"\u003e\n    \u003cimg alt=\"License: MIT\" src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://twitter.com/zhiqiangfu6sun\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Twitter: zhiqiangfu6sun\" src=\"https://img.shields.io/twitter/follow/zhiqiangfu6sun.svg?style=social\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003e 集锦大厂面试常考的 前端手写题和 leetcode 算法题\n\n### 🏠 [DOCS](https://sunny-117.github.io/js-challenges/)\n\n## Author\n\n👤 **sunny-117**\n\n- Website: https://sunny-117.github.io/blog/\n- Twitter: [@zhiqiangfu6sun](https://twitter.com/zhiqiangfu6sun)\n- Github: [@sunny-117](https://github.com/sunny-117)\n- personal share: [个人分享](https://jzq422bol5.feishu.cn/docx/doxcnyogD4POabvLHoa1yoEH9W0)\n\n## Project Status\n\n![Alt](https://repobeats.axiom.co/api/embed/297d193ee905d338d37a9afddbc8bbe1a336097e.svg \"Repobeats analytics image\")\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=Sunny-117/js-challenges\u0026type=Date)](https://star-history.com/#Sunny-117/js-challenges\u0026Date)\n\n# CONTENT\n\n前端手写题集锦 记录大厂**笔试，面试常考**手写题，2024 年前端面试中常见的 leetcode 算法题, 致力打造最全的前端 JavaScript 手写题题库和答案的最优解\n\n\u003e 题目来源：总结了牛客截止到 2024 年 7 月的所有大厂手写题[100%]，掘金部分出名的手写题文章，备战前端春招，秋招好友的总结好的题目(github), 就不一一列举链接啦，总之此项目题目来源于社区，答案也由社区讨论后 merge，也完全服务于社区。\n\n谢谢您的 star，您的 star 是我更新的动力 🥳\n\n**里面有答案，为了让你们有一个参考，不过非常希望你们能提供自己的思路，指出答案中存在的问题，复杂度优化等等， 期待你们的 contribute, 想来一起维护这个项目，可以联系我，成为 contributor**\n\n最后我把社区的好的答案汇总到一个目录下，答案专栏，方便刷题\n\n主要是让大家讨论出最优解，然后 merge，一起贡献这个项目，有些答案有点问题，所以我给出的答案仅作参考，也欢迎发现的小伙伴提 PR\n\n## 🤝 Contributing\n\nContributions, issues and feature requests are welcome!\u003cbr /\u003eFeel free to check [issues page](https://github.com/Sunny-117/js-challenges/issues). You can also take a look at the [contributing guide](https://github.com/Sunny-117/js-challenges#%E8%B4%A1%E7%8C%AE%E6%AD%A4%E9%A1%B9%E7%9B%AE).\n\n\u003ca href=\"https://github.com/Sunny-117/js-challenges/graphs/contributors\"\u003e\u003cimg src=\"https://contrib.rocks/image?repo=Sunny-117/js-challenges\" style=\"height: 100px\" /\u003e\u003c/a\u003e\n\nThank you to all the people who already contributed to js-challenges!\n\n# 前端 JavaScript 手写题\n\n## JavaScript HOT 100 题\n\n\u003e 中大厂面试，最常考的 100 个题，每一题都非常具有代表性，想要准备面试突击的同学，优先看这些题，祝在座的每一位都能拿到满意的 offer\n\n- [实现 Promise.all](https://github.com/Sunny-117/Front-end-handwritten-question/issues/1)\n- [JSON2DOM = react 的 render 函数](https://github.com/Sunny-117/Front-end-handwritten-question/issues/37)\n- [树形结构转成列表](https://github.com/Sunny-117/Front-end-handwritten-question/issues/40)\n- [列表转成树形结构](https://github.com/Sunny-117/Front-end-handwritten-question/issues/41)\n- [Array.prototype.flat](https://github.com/Sunny-117/Front-end-handwritten-question/issues/9)\n- [instanceof](https://github.com/Sunny-117/Front-end-handwritten-question/issues/32)\n- [call apply bind](https://github.com/Sunny-117/Front-end-handwritten-question/issues/30)\n- [Array.prototype.map](https://github.com/Sunny-117/Front-end-handwritten-question/issues/11)\n- [正则表达式模版字符串](https://github.com/Sunny-117/Front-end-handwritten-question/issues/48)\n- [lodash.get](https://github.com/Sunny-117/Front-end-handwritten-question/issues/20)\n- [深拷贝](https://github.com/Sunny-117/Front-end-handwritten-question/issues/58)\n- [寄生组合式继承](https://github.com/Sunny-117/Front-end-handwritten-question/issues/59)\n- [发布订阅者模式](https://github.com/Sunny-117/Front-end-handwritten-question/issues/60)\n- [岛屿数量](https://github.com/Sunny-117/js-challenges/issues/320)\n- [实现有并行限制的 Promise 调度器](https://github.com/Sunny-117/Front-end-handwritten-question/issues/149)\n- [实现一个 LazyMan ](https://github.com/Sunny-117/js-challenges/issues/382)\n\n## 实现 Promise （hot）\n\n- [完整实现 Promise A+](https://github.com/Sunny-117/Front-end-handwritten-question/issues/8)\n- [实现 Promise.all](https://github.com/Sunny-117/Front-end-handwritten-question/issues/1)\n- [实现 Promise.prototype.finally](https://github.com/Sunny-117/Front-end-handwritten-question/issues/2)\n- [实现 Promise.allSettled](https://github.com/Sunny-117/Front-end-handwritten-question/issues/3)\n- [实现 Promise.race](https://github.com/Sunny-117/Front-end-handwritten-question/issues/4)\n- [实现 Promise.prototype.catch](https://github.com/Sunny-117/Front-end-handwritten-question/issues/5)\n- [Promise.resolve ](https://github.com/Sunny-117/Front-end-handwritten-question/issues/6)\n- [Promise.reject](https://github.com/Sunny-117/Front-end-handwritten-question/issues/7)\n\n## Promise 周边场景题（hot）\n\n- [交通灯](https://github.com/Sunny-117/Front-end-handwritten-question/issues/164)\n- [封装异步的 fetch，使用 async await 方式来使用](https://github.com/Sunny-117/Front-end-handwritten-question/issues/163)\n- [repeat(console.log, 5, 1000)](https://github.com/Sunny-117/Front-end-handwritten-question/issues/162)\n- [封装一个工具函数输入一个 promiseA 返回一个 promiseB 如果超过 1s 没返回则抛出异常如果正常则输出正确的值](https://github.com/Sunny-117/Front-end-handwritten-question/issues/161)\n- [请求 5s 未完成就终止](https://github.com/Sunny-117/Front-end-handwritten-question/issues/160)\n- [实现一个 sleep 函数](https://github.com/Sunny-117/Front-end-handwritten-question/issues/159)\n- [js 每隔一秒打印 1,2,3,4,5](https://github.com/Sunny-117/Front-end-handwritten-question/issues/158)\n- [使用 setTimeout 实现 setInterval](https://github.com/Sunny-117/Front-end-handwritten-question/issues/156)\n- [promise 实现图片异步加载](https://github.com/Sunny-117/Front-end-handwritten-question/issues/155)\n- [使用 Promise 封装 AJAX 请求](https://github.com/Sunny-117/Front-end-handwritten-question/issues/154)\n- [我们能反过来使用 setinterval 模拟实现 settimeout 吗？ ](https://github.com/Sunny-117/Front-end-handwritten-question/issues/157)\n- [异步任务：依次发送 3 次网络请求，拿到服务器数据](https://github.com/Sunny-117/Front-end-handwritten-question/issues/172)\n- [实现网络请求超时判断，超过三秒视为超时](https://github.com/Sunny-117/Front-end-handwritten-question/issues/171)\n- [promise 中断请求](https://github.com/Sunny-117/Front-end-handwritten-question/issues/170)\n- [给定一系列的 api，测量上传速度（实现的时候用的 GET 请求）并选择一个加载时间最短的 api](https://github.com/Sunny-117/Front-end-handwritten-question/issues/169)\n- [settimeout 系统补偿时间](https://github.com/Sunny-117/Front-end-handwritten-question/issues/168)\n- [setTimeout 准时](https://github.com/Sunny-117/Front-end-handwritten-question/issues/167)\n- [请求五秒未完成则终止](https://github.com/Sunny-117/Front-end-handwritten-question/issues/166)\n- [并发多个请求，返回先得到 response 的。函数输入为 url 数组，输出为第一个返回的 response 的结果](https://github.com/Sunny-117/Front-end-handwritten-question/issues/165)\n- [JS 异步数据流，实现并发异步请求，结果顺序输出](https://github.com/Sunny-117/Front-end-handwritten-question/issues/153)\n- [Promise 串行](https://github.com/Sunny-117/Front-end-handwritten-question/issues/152)\n- [处理高并发, 100 条数据，带宽为 10， 跑满带宽](https://github.com/Sunny-117/Front-end-handwritten-question/issues/151)\n- [设计一个简单的任务队列, 要求分别在 1,3,4 秒后打印出 \"1\", \"2\", \"3\"；](https://github.com/Sunny-117/Front-end-handwritten-question/issues/150)\n- [实现有并行限制的 Promise 调度器](https://github.com/Sunny-117/Front-end-handwritten-question/issues/149)\n- [实现 Scheduler](https://github.com/Sunny-117/Front-end-handwritten-question/issues/148)\n- [有并发限制的 Promise.all(ts 类型) ](https://github.com/Sunny-117/Front-end-handwritten-question/issues/147)\n- [实现 如果上一次的没请求完，之后的就无响应](https://github.com/Sunny-117/Front-end-handwritten-question/issues/146)\n- [使用 Promise 实现每隔三秒输出时间](https://github.com/Sunny-117/Front-end-handwritten-question/issues/145)\n- [使用 Promise 改写回调地狱](https://github.com/Sunny-117/Front-end-handwritten-question/issues/144)\n- [设计一个函数，该函数的参数为可同时发送请求的大小，返回一个函数，该函数的参数为要请求的 url。 实现的效果为，同时发送 n 个请求，当有请求返回后往请求队列里 push 新的请求，并输出刚刚结束的请求的返回值](https://github.com/Sunny-117/Front-end-handwritten-question/issues/143)\n- [Promise.retry 超时重新请求，并在重试一定次数依然失败时输出缓存内容](https://github.com/Sunny-117/Front-end-handwritten-question/issues/142)\n- [写一个 mySetInterVal(fn, a, b)，每次间隔 a,a+b,a+2b 的时间，然后写一个 myClear，停止上面的 mySetInterVal](https://github.com/Sunny-117/Front-end-handwritten-question/issues/141)\n\n## JavaScript 常考手写题\n\n- [产生一个不重复的随机数组](https://github.com/Sunny-117/Front-end-handwritten-question/issues/140)\n- [await async 如何实现 ](https://github.com/Sunny-117/js-challenges/issues/280)\n- [使用递归完成 1 到 100 的累加 ](https://github.com/Sunny-117/Front-end-handwritten-question/issues/138)\n- [打印出 1~10000 以内的对称数](https://github.com/Sunny-117/Front-end-handwritten-question/issues/137)\n- [实现一个字符串匹配算法 indexOf](https://github.com/Sunny-117/Front-end-handwritten-question/issues/136)\n- [请实现一个模块 math，支持链式调用 math.add(2,4).minus(3).times(2); ](https://github.com/Sunny-117/Front-end-handwritten-question/issues/135)\n- [手写用 ES6proxy 如何实现 arr[-1] 的访问（滴滴 2020）](https://github.com/Sunny-117/Front-end-handwritten-question/issues/134)\n- [有一堆整数，请把他们分成三份，确保每一份和尽量相等（11，42，23，4，5，6 4 5 6 11 23 42 56 78 90） ](https://github.com/Sunny-117/Front-end-handwritten-question/issues/133)\n- [之字形打印矩阵](https://github.com/Sunny-117/Front-end-handwritten-question/issues/132)\n- [数组中的最大值](https://github.com/Sunny-117/Front-end-handwritten-question/issues/131)\n- [尾递归（斐波那契数列](https://github.com/Sunny-117/Front-end-handwritten-question/issues/130)\n- [实现简单路由 ](https://github.com/Sunny-117/Front-end-handwritten-question/issues/129)\n- [封装一个 localstorage 的 setItem 和 getItem 方法](https://github.com/Sunny-117/Front-end-handwritten-question/issues/128)\n- [1-1000 回文数](https://github.com/Sunny-117/Front-end-handwritten-question/issues/127)\n- [随机生成字符串](https://github.com/Sunny-117/Front-end-handwritten-question/issues/126)\n- [判断一个字符串是否为驼峰字符串， judge('ByteDance','BD') -\u003e true judge('Bytedance','BD') -\u003e false](https://github.com/Sunny-117/Front-end-handwritten-question/issues/125)\n- [压缩字符串](https://github.com/Sunny-117/Front-end-handwritten-question/issues/124)\n- [Map 场景题 ](https://github.com/Sunny-117/Front-end-handwritten-question/issues/123)\n- [输入 50a6we8y20x 输出 50 个 a，6 个 we，8 个 y，20 个 x](https://github.com/Sunny-117/Front-end-handwritten-question/issues/122)\n- [手写 defineProperty](https://github.com/Sunny-117/Front-end-handwritten-question/issues/121)\n- [String string 值一样返回 true Object Object 返回 true function function 都是声明的一个新的变量 返回 false](https://github.com/Sunny-117/Front-end-handwritten-question/issues/120)\n- [对输入的字符串：去除其中的字符'b'；去除相邻的'a'和'c'](https://github.com/Sunny-117/Front-end-handwritten-question/issues/119)\n- [用一行代码，将数组中的字符串和字符串对象(new String(123))直接判定出来](https://github.com/Sunny-117/Front-end-handwritten-question/issues/118)\n- [before](https://github.com/Sunny-117/Front-end-handwritten-question/issues/117)\n- [实现一下 console.log ](https://github.com/Sunny-117/Front-end-handwritten-question/issues/116)\n- [实现(5).add(3).minus(2)功能](https://github.com/Sunny-117/Front-end-handwritten-question/issues/115)\n- [将十进制数字转为二进制数字字符串](https://github.com/Sunny-117/Front-end-handwritten-question/issues/114)\n- [封装 remove child.remove()销毁自身](https://github.com/Sunny-117/Front-end-handwritten-question/issues/113)\n- [字符串中字母的出现次数](https://github.com/Sunny-117/Front-end-handwritten-question/issues/112)\n- [输出一个等腰三角形](https://github.com/Sunny-117/Front-end-handwritten-question/issues/111)\n- [实现一个函数 a，使其奇数次调用时返回 1，偶数次调用时返回 2（不能使用全局变量）](https://github.com/Sunny-117/Front-end-handwritten-question/issues/110)\n- [求 最接近的值](https://github.com/Sunny-117/Front-end-handwritten-question/issues/109)\n- [不用循环求和](https://github.com/Sunny-117/Front-end-handwritten-question/issues/108)\n- [连续赋值操作](https://github.com/Sunny-117/Front-end-handwritten-question/issues/107)\n- [输入一串字符串，根据字符串求出每个字母的数量并返回结果对象。（数字为 1 时可省略](https://github.com/Sunny-117/Front-end-handwritten-question/issues/106)\n- [创建包含 10 个 1 的数组 多种方法](https://github.com/Sunny-117/Front-end-handwritten-question/issues/105)\n- [['zm', 'za', 'b', 'lm', 'ln', 'k'] ](https://github.com/Sunny-117/Front-end-handwritten-question/issues/104)\n- [[\"0-\u003e2\", \"4-\u003e5\", \"7\", \"13\", \"15-\u003e16\"] ](https://github.com/Sunny-117/Front-end-handwritten-question/issues/103)\n- [['ab', 'c', 'ab', 'd', 'c'] =\u003e ['ab1', 'c1' ,'ab2', 'd', 'c2'] ](https://github.com/Sunny-117/Front-end-handwritten-question/issues/102)\n- [移除空属性](https://github.com/Sunny-117/Front-end-handwritten-question/issues/101)\n- [判断两个对象是否相等](https://github.com/Sunny-117/Front-end-handwritten-question/issues/100)\n- [一个数组，找出每个数组元素右侧第一个比当前数大的数的下标，时间复杂度 O(N)](https://github.com/Sunny-117/Front-end-handwritten-question/issues/98)\n- [寻找出现次数最多的三个标签](https://github.com/Sunny-117/Front-end-handwritten-question/issues/97)\n- [素数](https://github.com/Sunny-117/Front-end-handwritten-question/issues/96)\n- [实现日期格式化函数](https://github.com/Sunny-117/Front-end-handwritten-question/issues/95)\n- [实现 jsonp](https://github.com/Sunny-117/Front-end-handwritten-question/issues/94)\n- [URL 反转 ](https://github.com/Sunny-117/Front-end-handwritten-question/issues/93)\n- [解析 URL Params 为对象](https://github.com/Sunny-117/Front-end-handwritten-question/issues/92)\n- [调用计数器（支持重置）](https://github.com/Sunny-117/Front-end-handwritten-question/issues/91)\n- [颜色生成](https://github.com/Sunny-117/Front-end-handwritten-question/issues/90)\n- [JavaScript 怎么清空数组](https://github.com/Sunny-117/Front-end-handwritten-question/issues/89)\n- [判断 A、B 数组的包含关系（值和数量），A 属于 B 返回 1，B 属于 A 返回 2，两者相等返回 0，其他返回-1](https://github.com/Sunny-117/Front-end-handwritten-question/issues/88)\n- [对象的合并](https://github.com/Sunny-117/Front-end-handwritten-question/issues/87)\n- [实现一个 无限延伸数组](https://github.com/Sunny-117/Front-end-handwritten-question/issues/86))\n- [多行字符串转二维数组](https://github.com/Sunny-117/Front-end-handwritten-question/issues/85)\n- [请实现一个通用的 Array 解构赋值](https://github.com/Sunny-117/Front-end-handwritten-question/issues/84)\n- [数组合并](https://github.com/Sunny-117/Front-end-handwritten-question/issues/83)\n- [数组交集，并集，差集](https://github.com/Sunny-117/Front-end-handwritten-question/issues/82)\n- [多维数组全排列](https://github.com/Sunny-117/Front-end-handwritten-question/issues/81)\n- [判断对象是否存在循环引用](https://github.com/Sunny-117/Front-end-handwritten-question/issues/80)\n- [实现函数 solution(arr, k)](https://github.com/Sunny-117/Front-end-handwritten-question/issues/79)\n- [逆对象扁平](https://github.com/Sunny-117/Front-end-handwritten-question/issues/78)\n- [对象扁平化](https://github.com/Sunny-117/Front-end-handwritten-question/issues/77)\n- [实现 执行一次的函数 ](https://github.com/Sunny-117/Front-end-handwritten-question/issues/76)\n- [链式调用](https://github.com/Sunny-117/Front-end-handwritten-question/issues/75)\n- [偏函数 ](https://github.com/Sunny-117/Front-end-handwritten-question/issues/74)\n- [实现管道函数](https://github.com/Sunny-117/Front-end-handwritten-question/issues/73)\n- [手写事件代理（委托） ](https://github.com/Sunny-117/Front-end-handwritten-question/issues/72)\n- [数据类型判断](https://github.com/Sunny-117/Front-end-handwritten-question/issues/71)\n- [类数组转数组](https://github.com/Sunny-117/Front-end-handwritten-question/issues/70)\n- [预加载](https://github.com/Sunny-117/Front-end-handwritten-question/issues/69)\n- [图片懒加载](https://github.com/Sunny-117/Front-end-handwritten-question/issues/68)\n- [数组去重](https://github.com/Sunny-117/Front-end-handwritten-question/issues/67)\n- [防抖 节流](https://github.com/Sunny-117/Front-end-handwritten-question/issues/66)\n- [函数组合 compose redux-saga koa 洋葱模型](https://github.com/Sunny-117/Front-end-handwritten-question/issues/65)\n- [sum(x,y)和 sum(x)(y)](https://github.com/Sunny-117/Front-end-handwritten-question/issues/64)\n- [curry 柯里化](https://github.com/Sunny-117/Front-end-handwritten-question/issues/63)\n- [实现 xxx 时间之前的函数](https://github.com/Sunny-117/js-challenges/issues/252)\n- [n 个 2 的 n 次方之和](https://github.com/Sunny-117/js-challenges/issues/253)\n- [无限动画](https://github.com/Sunny-117/js-challenges/issues/254)\n- [瀑布流](https://github.com/Sunny-117/js-challenges/issues/255)\n- [匹配 \"a\\*c\", \"abcaacc\" ](https://github.com/Sunny-117/js-challenges/issues/256)\n- [一个字符串中是否出现某串字符,出现的话返回索引](https://github.com/Sunny-117/js-challenges/issues/257)\n- [实现一个属性选择器](https://github.com/Sunny-117/js-challenges/issues/258)\n- [字符串转数字](https://github.com/Sunny-117/js-challenges/issues/259)\n- [实现一个跨浏览器事件工具](https://github.com/Sunny-117/js-challenges/issues/260)\n- [12 调用计数器（支持重置）](https://github.com/Sunny-117/js-challenges/issues/261)\n- [实现内存函数缓存函数调用结果](https://github.com/Sunny-117/js-challenges/issues/262)\n- [返回给定七个扑克牌是否有同花顺，数据结构 [{num: 1, hua: 's'}, ...]](https://github.com/Sunny-117/js-challenges/issues/263)\n- [JS 定义一个 log 方法 ](https://github.com/Sunny-117/js-challenges/issues/264)\n- [阿拉伯数字专汉字(偏难)](https://github.com/Sunny-117/js-challenges/issues/265)\n- [用代码实现把字符串转换成 base64 编码](https://github.com/Sunny-117/js-challenges/issues/266)\n- [设计 LRU 缓存结构](https://github.com/Sunny-117/js-challenges/issues/272)\n- [实现一个 LazyMan ](https://github.com/Sunny-117/js-challenges/issues/382)\n- [标签整理分类题](https://github.com/Sunny-117/js-challenges/issues/391)\n- [求集合单词组合起来的不同结果，集合中的单词不重复，每个结果包含所有单词](https://github.com/Sunny-117/js-challenges/issues/418)\n- [实现简易版的useState](https://github.com/Sunny-117/js-challenges/issues/502)\n- [数组乱序-百度实习](https://github.com/Sunny-117/js-challenges/issues/508)\n- [排序找第几个最大-快手实习](https://github.com/Sunny-117/js-challenges/issues/509)\n- [怎么在制定数据源里面生成一个长度为 n 的不重复随机数组 能有几种方法 时间复杂度多少（字节）](https://github.com/Sunny-117/js-challenges/issues/516)\n\n## ts 类型体操\n\n- [myPick](https://github.com/Sunny-117/js-challenges/issues/339)\n- [myReadonly](https://github.com/Sunny-117/js-challenges/issues/340)\n- [deepReadonly](https://github.com/Sunny-117/js-challenges/issues/476)\n- [tuple to object](https://github.com/Sunny-117/js-challenges/issues/341)\n- [first of Array](https://github.com/Sunny-117/js-challenges/issues/342)\n- [tuple of Length](https://github.com/Sunny-117/js-challenges/issues/343)\n- [myExclude](https://github.com/Sunny-117/js-challenges/issues/344)\n- [awaited](https://github.com/Sunny-117/js-challenges/issues/345)\n- [if](https://github.com/Sunny-117/js-challenges/issues/346)\n- [concat](https://github.com/Sunny-117/js-challenges/issues/347)\n- [includes](https://github.com/Sunny-117/js-challenges/issues/348)\n- [Trim](https://github.com/Sunny-117/js-challenges/issues/375)\n- [push](https://github.com/Sunny-117/js-challenges/issues/431)\n- [unshift](https://github.com/Sunny-117/js-challenges/issues/432)\n- [parameters](https://github.com/Sunny-117/js-challenges/issues/433)\n- [returnType](https://github.com/Sunny-117/js-challenges/issues/434)\n- [myReadonly2](https://github.com/Sunny-117/js-challenges/issues/435)\n- [Omit](https://github.com/Sunny-117/js-challenges/issues/429)\n\n## 设计模式相关\n\n- [单例模式 ](https://github.com/Sunny-117/js-challenges/issues/458)\n- [命令模式](https://github.com/Sunny-117/js-challenges/issues/460)\n- [策略模式](https://github.com/Sunny-117/js-challenges/issues/461)\n- [观察者模式](https://github.com/Sunny-117/Front-end-handwritten-question/issues/62)\n- [发布订阅者模式](https://github.com/Sunny-117/Front-end-handwritten-question/issues/60)\n- [工厂模式](https://github.com/Sunny-117/js-challenges/issues/487)\n- [代理模式](https://github.com/Sunny-117/js-challenges/issues/488)\n- [装饰器模式](https://github.com/Sunny-117/js-challenges/issues/489)\n\n## 树-场景题（hot）\n\n- [DOM2JSON](https://github.com/Sunny-117/Front-end-handwritten-question/issues/36)\n- [JSON2DOM = react 的 render 函数](https://github.com/Sunny-117/Front-end-handwritten-question/issues/37)\n- [计算目录树的深度](https://github.com/Sunny-117/Front-end-handwritten-question/issues/38)\n- [树形结构获取路径名](https://github.com/Sunny-117/Front-end-handwritten-question/issues/39)\n- [树形结构转成列表](https://github.com/Sunny-117/Front-end-handwritten-question/issues/40)\n- [列表转成树形结构](https://github.com/Sunny-117/Front-end-handwritten-question/issues/41)\n- [对象树遍历](https://github.com/Sunny-117/Front-end-handwritten-question/issues/42)\n- [获取树对象属性](https://github.com/Sunny-117/Front-end-handwritten-question/issues/43)\n- [查找 json 中的 children 路径](https://github.com/Sunny-117/Front-end-handwritten-question/issues/44)\n- [对象字符串转化成树形结构](https://github.com/Sunny-117/Front-end-handwritten-question/issues/45)\n- [判断有无符合路径和 -\u003e 打印所有路径](https://github.com/Sunny-117/Front-end-handwritten-question/issues/46)\n- [获取树结构中的 name：getName](https://github.com/Sunny-117/Front-end-handwritten-question/issues/47)\n\n## 实现 JS 原生方法\n\n- [Array.prototype.flat](https://github.com/Sunny-117/Front-end-handwritten-question/issues/9)\n- [Array.prototype.forEach](https://github.com/Sunny-117/Front-end-handwritten-question/issues/10)\n- [Array.prototype.map](https://github.com/Sunny-117/Front-end-handwritten-question/issues/11)\n- [Array.prototype.filter](https://github.com/Sunny-117/Front-end-handwritten-question/issues/12)\n- [Array.prototype.reduce](https://github.com/Sunny-117/Front-end-handwritten-question/issues/13)\n- [Array.prototype.fill](https://github.com/Sunny-117/Front-end-handwritten-question/issues/14)\n- [Array.prototype.includes](https://github.com/Sunny-117/Front-end-handwritten-question/issues/15)\n- [Array.prototype.push](https://github.com/Sunny-117/Front-end-handwritten-question/issues/16)\n- [Array.prototype.unshift](https://github.com/Sunny-117/Front-end-handwritten-question/issues/17)\n- [Array.prototype.copy](https://github.com/Sunny-117/Front-end-handwritten-question/issues/18)\n- [Array.prototype.getLevel](https://github.com/Sunny-117/Front-end-handwritten-question/issues/19)\n- [Array.prototype.interator](https://github.com/Sunny-117/js-challenges/issues/337)\n- [Array.prototype.sort](https://github.com/Sunny-117/js-challenges/issues/472)\n- [实现 es6 的 set 集合](https://github.com/Sunny-117/Front-end-handwritten-question/issues/21)\n- [实现 es6 的 map 集合](https://github.com/Sunny-117/Front-end-handwritten-question/issues/22)\n- [String.prototype.zpadStart](https://github.com/Sunny-117/Front-end-handwritten-question/issues/23)\n- [Object.assign](https://github.com/Sunny-117/Front-end-handwritten-question/issues/25)\n- [Object.is](https://github.com/Sunny-117/Front-end-handwritten-question/issues/26)\n- [JSON.stringify](https://github.com/Sunny-117/Front-end-handwritten-question/issues/28)\n- [JSON.parse](https://github.com/Sunny-117/Front-end-handwritten-question/issues/29)\n- [call apply bind](https://github.com/Sunny-117/Front-end-handwritten-question/issues/30)\n- [typeof](https://github.com/Sunny-117/js-challenges/issues/459)\n- [instanceof](https://github.com/Sunny-117/Front-end-handwritten-question/issues/32)\n- [trim](https://github.com/Sunny-117/Front-end-handwritten-question/issues/33)\n- [实现 new](https://github.com/Sunny-117/Front-end-handwritten-question/issues/34)\n- [String.prototype.repeat](https://github.com/Sunny-117/Front-end-handwritten-question/issues/35)\n- [String.prototype.includes](https://github.com/Sunny-117/Front-end-handwritten-question/issues/204)\n\n## JS 库函数实现\n\n- [lodash.get](https://github.com/Sunny-117/Front-end-handwritten-question/issues/20)\n- [lodash.chunk](https://github.com/Sunny-117/Front-end-handwritten-question/issues/99)\n- [lodash.once](https://github.com/Sunny-117/js-challenges/issues/222)\n- [classnames](https://github.com/Sunny-117/js-challenges/issues/216)\n\n## js utils\n\n- [判断一个对象是否是 isPlainObject](https://github.com/Sunny-117/Front-end-handwritten-question/issues/24)\n\n## 手写 nodejs 模块\n\n- [promisify](https://github.com/Sunny-117/Front-end-handwritten-question/issues/31)\n\n## 正则相关\n\n- [正则表达式模版字符串](https://github.com/Sunny-117/Front-end-handwritten-question/issues/48)\n- [正则判断手机号，qq，颜色，邮箱](https://github.com/Sunny-117/Front-end-handwritten-question/issues/49)\n- [字符串的大小写取反](https://github.com/Sunny-117/Front-end-handwritten-question/issues/50)\n- [检验字符串首尾是否含有数字](https://github.com/Sunny-117/Front-end-handwritten-question/issues/51)\n- [去除字符串空格](https://github.com/Sunny-117/Front-end-handwritten-question/issues/52)\n- [去除字符串中的字母](https://github.com/Sunny-117/Front-end-handwritten-question/issues/53)\n- [正则：短横线 =\u003e 驼峰](https://github.com/Sunny-117/Front-end-handwritten-question/issues/54)\n- [正则：驼峰 =\u003e 短横线](https://github.com/Sunny-117/js-challenges/issues/377)\n- [对象 key 的驼峰转下划线](https://github.com/Sunny-117/Front-end-handwritten-question/issues/55)\n- [判断字符串中是否存在连续的三个数](https://github.com/Sunny-117/Front-end-handwritten-question/issues/56)\n- [((2+3)+(3*4))+2----\u003e['(2 + 3)+(3 * 4)', '2 + 3', '3 \\* 4'] ](https://github.com/Sunny-117/Front-end-handwritten-question/issues/57)\n\n## 排序算法\n\n- [冒泡排序](https://github.com/Sunny-117/Front-end-handwritten-question/issues/193)\n- [选择排序](https://github.com/Sunny-117/Front-end-handwritten-question/issues/194)\n- [快速排序](https://github.com/Sunny-117/Front-end-handwritten-question/issues/195)\n- [插入排序](https://github.com/Sunny-117/Front-end-handwritten-question/issues/196)\n- [归并排序](https://github.com/Sunny-117/Front-end-handwritten-question/issues/197)\n- [基数排序](https://github.com/Sunny-117/Front-end-handwritten-question/issues/202)\n- [计数排序](https://github.com/Sunny-117/Front-end-handwritten-question/issues/201)\n- [希尔排序](https://github.com/Sunny-117/Front-end-handwritten-question/issues/200)\n- [桶排序](https://github.com/Sunny-117/Front-end-handwritten-question/issues/199)\n- [堆排序](https://github.com/Sunny-117/Front-end-handwritten-question/issues/198)\n\n## 实现自定义 HOOK\n\n- [Hooks 怎么封装手势逻辑](https://github.com/Sunny-117/Front-end-handwritten-question/issues/192)\n- [Hooks 实现移动端的滑动轮播插件 ](https://github.com/Sunny-117/Front-end-handwritten-question/issues/191)\n- [如何用 Hooks 模拟 componentDidMount 与 componentWillUnmount](https://github.com/Sunny-117/Front-end-handwritten-question/issues/190)\n- [实现一个 useBodyScrollLock ，当出现弹窗时 阻止背景滚动](https://github.com/Sunny-117/Front-end-handwritten-question/issues/189)\n- [ts 实现 hooks: useInterval](https://github.com/Sunny-117/Front-end-handwritten-question/issues/188)\n- [实现 useQuery](https://github.com/Sunny-117/Front-end-handwritten-question/issues/187)\n- [实现 useRequest](https://github.com/Sunny-117/Front-end-handwritten-question/issues/186)\n- [实现 usePosition](https://github.com/Sunny-117/js-challenges/issues/327)\n- [实现 useStorage](https://github.com/Sunny-117/js-challenges/issues/328)\n- [实现 防抖收藏 useFavorite ](https://github.com/Sunny-117/js-challenges/issues/394)\n\n## 组件设计题（Vue/React/JS 均可）\n\n- [全选](https://github.com/Sunny-117/Front-end-handwritten-question/issues/178)\n- [轮播图](https://github.com/Sunny-117/Front-end-handwritten-question/issues/177)\n- [根据 response 渲染 table](https://github.com/Sunny-117/Front-end-handwritten-question/issues/176)\n- [歌词滚动功能(hot)](https://github.com/Sunny-117/Front-end-handwritten-question/issues/175)\n- [实现一个 百度搜索框 （搜索提示）](https://github.com/Sunny-117/Front-end-handwritten-question/issues/174)\n- [实现 todos](https://github.com/Sunny-117/Front-end-handwritten-question/issues/173)\n- [计时器或倒计时组件](https://github.com/Sunny-117/Front-end-handwritten-question/issues/185)\n- [设计一个公会入驻信息提交页](https://github.com/Sunny-117/Front-end-handwritten-question/issues/184)\n- [编码实现宽高不相同图片的自适配排列](https://github.com/Sunny-117/Front-end-handwritten-question/issues/183)\n- [列表子元素顺序反转](https://github.com/Sunny-117/Front-end-handwritten-question/issues/182)\n- [遍历树组件](https://github.com/Sunny-117/Front-end-handwritten-question/issues/181)\n- [选项卡](https://github.com/Sunny-117/Front-end-handwritten-question/issues/180)\n- [拖拽](https://github.com/Sunny-117/Front-end-handwritten-question/issues/179)\n- [原创组件设计题：互斥级联表单组件](https://github.com/Sunny-117/js-challenges/issues/512)\n\n## Vue 原理题\n\n- [手写 v-model 简易版](https://github.com/Sunny-117/js-challenges/issues/388)\n- [手写 vue2 响应式](https://github.com/Sunny-117/js-challenges/issues/390)\n- [手写 vue3 proxy 实现数据响应式](https://github.com/Sunny-117/js-challenges/issues/397)\n- [手写 v-bind 简易版](https://github.com/Sunny-117/js-challenges/issues/396)\n- [手写 v-html 和 v-text](https://github.com/Sunny-117/js-challenges/issues/395)\n\n## HTML CSS 手写题\n\n- [实现圆形环状进度条](https://github.com/Sunny-117/Front-end-handwritten-question/issues/203)\n- [等边三角形](https://github.com/Sunny-117/js-challenges/issues/224)\n- [实现 扇形](https://github.com/Sunny-117/js-challenges/issues/225)\n- [实现平行四边形](https://github.com/Sunny-117/js-challenges/issues/226)\n- [实现 九宫格](https://github.com/Sunny-117/js-challenges/issues/227)\n- [实现一个秒针绕一点转动的效果](https://github.com/Sunny-117/js-challenges/issues/228)\n- [实现一个 球 字节](https://github.com/Sunny-117/js-challenges/issues/229)\n- [圆弧旋转](https://github.com/Sunny-117/js-challenges/issues/230)\n- [使用 div 和 css 实现一个圆形，红色部分站 60%，绿色 40%](https://github.com/Sunny-117/js-challenges/issues/231)\n- [现在有一个进度条，进度条中间有一串文字，当我的进度条覆盖了文字之后，文字要去进度条反色，怎么实现？](https://github.com/Sunny-117/js-challenges/issues/232)\n- [shadowDOM 实现 css 隔离](https://github.com/Sunny-117/js-challenges/issues/233)\n- [两栏布局](https://github.com/Sunny-117/js-challenges/issues/234)\n- [宽高自适应正方形](https://github.com/Sunny-117/js-challenges/issues/235)\n- [1px 问题](https://github.com/Sunny-117/js-challenges/issues/236)\n- [实现 筛子 ](https://github.com/Sunny-117/js-challenges/issues/237)\n- [css3 实现多行文字截断处理](https://github.com/Sunny-117/js-challenges/issues/238)\n- [三栏布局移动优先设计](https://github.com/Sunny-117/js-challenges/issues/239)\n- [css 实现一个自适应搜索框](https://github.com/Sunny-117/js-challenges/issues/240)\n- [css 书卡布局](https://github.com/Sunny-117/js-challenges/issues/241)\n- [实现宽高比例固定的 div](https://github.com/Sunny-117/js-challenges/issues/378)\n- [实现一个五点骰子](https://github.com/Sunny-117/js-challenges/issues/392)\n- [实现圣杯布局](https://github.com/Sunny-117/js-challenges/issues/406)\n- [黑白主题切换](https://github.com/Sunny-117/js-challenges/issues/416)\n\n## JS 实现基本数据结构\n\n- [队列结构](https://github.com/Sunny-117/js-challenges/issues/242)\n- [哈希表](https://github.com/Sunny-117/js-challenges/issues/243)\n- [实现集合](https://github.com/Sunny-117/js-challenges/issues/244)\n- [用 Javascript 创建一个单链表](https://github.com/Sunny-117/js-challenges/issues/245)\n- [树结构](https://github.com/Sunny-117/js-challenges/issues/246)\n- [图结构](https://github.com/Sunny-117/js-challenges/issues/247)\n- [栈结构](https://github.com/Sunny-117/js-challenges/issues/248)\n- [js 实现 堆](https://github.com/Sunny-117/js-challenges/issues/249)\n- [实现 Trie (前缀树)](https://github.com/Sunny-117/js-challenges/issues/250)\n- [top K](https://github.com/Sunny-117/js-challenges/issues/251)\n\n\n## 系统设计（场景）题\n\n- [原创-实现缓存类 TipCache设计](https://github.com/Sunny-117/js-challenges/issues/511)\n- [百度社招：实现一个Observable](https://github.com/Sunny-117/js-challenges/issues/514)\n\n## 其他\n\n- [tools-js](https://github.com/Sunny-117/js-challenges/issues/283)\n\n# 前端常考 leetcode 算法题\n\n## 前端 HOT 100 题\n\n\u003e 所有题目的名称都对应 leetcode，可以自行搜索，完成题目后欢迎把答案贡献给 issue 评论区，大家讨论最优解后 merge 到答案文档区\n\n## 矩阵相关\n\n- [螺旋矩阵](https://github.com/Sunny-117/js-challenges/issues/217)\n- [旋转矩阵](https://github.com/Sunny-117/js-challenges/issues/317)\n- [旋转图像](https://github.com/Sunny-117/js-challenges/issues/318)\n- [岛屿数量](https://github.com/Sunny-117/js-challenges/issues/320)\n- [矩形重叠](https://github.com/Sunny-117/js-challenges/issues/321)\n- [矩阵乘法](https://github.com/Sunny-117/js-challenges/issues/409)\n\n## 数组\n\n- [把数组排成最小的数](https://github.com/Sunny-117/js-challenges/issues/501)\n- [买卖股票的最佳时机](https://github.com/Sunny-117/js-challenges/issues/268)\n- [最长递增子序列](https://github.com/Sunny-117/js-challenges/issues/277)\n\n\n## 链表\n\n- [删除排序链表中的重复元素](https://github.com/Sunny-117/js-challenges/issues/284)\n- [反转链表](https://github.com/Sunny-117/js-challenges/issues/285)\n- [反转链表 II](https://github.com/Sunny-117/js-challenges/issues/286)\n- [环形链表](https://github.com/Sunny-117/js-challenges/issues/287)\n- [环形链表 II](https://github.com/Sunny-117/js-challenges/issues/288)\n- [合并两个有序链表 ](https://github.com/Sunny-117/js-challenges/issues/289)\n- [链表中倒数第 k 个节点](https://github.com/Sunny-117/js-challenges/issues/290)\n- [两两交换链表中的节点](https://github.com/Sunny-117/js-challenges/issues/291)\n- [相交链表](https://github.com/Sunny-117/js-challenges/issues/292)\n- [K 个一组翻转链表](https://github.com/Sunny-117/js-challenges/issues/293)\n- [删除链表的倒数第 N 个结点](https://github.com/Sunny-117/js-challenges/issues/294)\n- [链表的中间结点](https://github.com/Sunny-117/js-challenges/issues/295)\n\n## 二叉树\n\n- [路径总和](https://github.com/Sunny-117/js-challenges/issues/296)\n- [路径总和 II](https://github.com/Sunny-117/js-challenges/issues/297)\n- [二叉树的所有路径](https://github.com/Sunny-117/js-challenges/issues/298)\n- [二叉树的层序遍历](https://github.com/Sunny-117/js-challenges/issues/299)\n- [二叉树的锯齿形层序遍历](https://github.com/Sunny-117/js-challenges/issues/300)\n- [N 叉树的层序遍历](https://github.com/Sunny-117/js-challenges/issues/301)\n- [二叉树的最大深度](https://github.com/Sunny-117/js-challenges/issues/302)\n- [二叉树的前序遍历](https://github.com/Sunny-117/js-challenges/issues/303)\n- [二叉树的完全性检验](https://github.com/Sunny-117/js-challenges/issues/304)\n- [序列化二叉树](https://github.com/Sunny-117/js-challenges/issues/385)\n- [二叉树的最近公共祖先](https://github.com/Sunny-117/js-challenges/issues/384)\n- [翻转二叉树](https://github.com/Sunny-117/js-challenges/issues/414)\n- [从中序与后序遍历序列构造二叉树](https://github.com/Sunny-117/js-challenges/issues/469)\n- [相同的树](https://github.com/Sunny-117/js-challenges/issues/463)\n- [对称二叉树](https://github.com/Sunny-117/js-challenges/issues/464)\n\n\n## 子序列问题\n\n- [最长递增子序列](https://github.com/Sunny-117/js-challenges/issues/326)\n- [最长连续递增序列](https://github.com/Sunny-117/js-challenges/issues/306)\n- [最长重复子数组](https://github.com/Sunny-117/js-challenges/issues/307)\n- [最长公共子序列](https://github.com/Sunny-117/js-challenges/issues/308)\n- [判断子序列 ](https://github.com/Sunny-117/js-challenges/issues/309)\n- [不相交的线](https://github.com/Sunny-117/js-challenges/issues/310)\n- [编辑距离](https://github.com/Sunny-117/js-challenges/issues/311)\n\n## 回文专题\n\n- [最长回文子串](https://github.com/Sunny-117/js-challenges/issues/312)\n- [最长回文子序列](https://github.com/Sunny-117/js-challenges/issues/419)\n- [回文数](https://github.com/Sunny-117/js-challenges/issues/313)\n- [验证回文串](https://github.com/Sunny-117/js-challenges/issues/314)\n- [验证回文字符串 Ⅱ](https://github.com/Sunny-117/js-challenges/issues/315)\n- [分割回文串（字节广告）](https://github.com/Sunny-117/js-challenges/issues/316)\n\n## 二分查找\n\n- [搜索旋转排序数组](https://github.com/Sunny-117/js-challenges/issues/351)\n- [x 的平方根](https://github.com/Sunny-117/js-challenges/issues/352)\n- [第一个错误的版本](https://github.com/Sunny-117/js-challenges/issues/353)\n- [有序数组中的单一元素](https://github.com/Sunny-117/js-challenges/issues/354)\n- [旋转数组的最小数字](https://github.com/Sunny-117/js-challenges/issues/355)\n- [0 ～ n-1 中缺失的数字](https://github.com/Sunny-117/js-challenges/issues/356)\n\n## 滑动窗口\n\n- [无重复字符的最长子串](https://github.com/Sunny-117/js-challenges/issues/357)\n- [字符串的排列](https://github.com/Sunny-117/js-challenges/issues/358)\n- [和为 s 的连续正数序列](https://github.com/Sunny-117/js-challenges/issues/359)\n\n## 双指针\n\n- [盛最多水的容器](https://github.com/Sunny-117/js-challenges/issues/360)\n- [三数之和](https://github.com/Sunny-117/js-challenges/issues/361)\n- [最接近的三数之和](https://github.com/Sunny-117/js-challenges/issues/362)\n- [接雨水](https://github.com/Sunny-117/js-challenges/issues/363)\n- [字符串相乘](https://github.com/Sunny-117/js-challenges/issues/364)\n- [合并两个有序数组](https://github.com/Sunny-117/js-challenges/issues/365)\n- [移动零](https://github.com/Sunny-117/js-challenges/issues/366)\n- [字符串相加](https://github.com/Sunny-117/js-challenges/issues/367)\n\n## 单调队列\n\n- [滑动窗口最大值](https://github.com/Sunny-117/js-challenges/issues/368)\n- [队列的最大值](https://github.com/Sunny-117/js-challenges/issues/369)\n\n## 单调栈\n\n- [每日温度](https://github.com/Sunny-117/js-challenges/issues/398)\n- [下一个更大的元素 I](https://github.com/Sunny-117/js-challenges/issues/399)\n- [下一个更大的元素 II](https://github.com/Sunny-117/js-challenges/issues/400)\n\n## 位运算\n\n- [只出现一次的数字](https://github.com/Sunny-117/js-challenges/issues/370)\n- [二进制中 1 的个数](https://github.com/Sunny-117/js-challenges/issues/371)\n- [数组中数字出现的次数](https://github.com/Sunny-117/js-challenges/issues/372)\n- [不用加减乘除做加法](https://github.com/Sunny-117/js-challenges/issues/373)\n\n## 动态规划\n\n- [最大子数组和](https://github.com/Sunny-117/js-challenges/issues/422)\n- [最小路径和](https://github.com/Sunny-117/js-challenges/issues/423)\n- [不同路径](https://github.com/Sunny-117/js-challenges/issues/424)\n- [不同路径 II](https://github.com/Sunny-117/js-challenges/issues/425)\n- [爬楼梯](https://github.com/Sunny-117/js-challenges/issues/426)\n- [最长有效括号](https://github.com/Sunny-117/js-challenges/issues/427)\n- [零钱兑换](https://github.com/Sunny-117/js-challenges/issues/451)\n\n## 回溯\n\n- [括号生成](https://github.com/Sunny-117/js-challenges/issues/437)\n- [电话号码的字母组合](https://github.com/Sunny-117/js-challenges/issues/438)\n- [全排列](https://github.com/Sunny-117/js-challenges/issues/439)\n- [全排列 II](https://github.com/Sunny-117/js-challenges/issues/440)\n- [N 皇后](https://github.com/Sunny-117/js-challenges/issues/441)\n- [N 皇后 II](https://github.com/Sunny-117/js-challenges/issues/442)\n\n## 字符串\n\n- [最长公共前缀](https://github.com/Sunny-117/js-challenges/issues/444)\n- [罗马数字转整数](https://github.com/Sunny-117/js-challenges/issues/445)\n- [整数转罗马数字](https://github.com/Sunny-117/js-challenges/issues/446)\n- [找出字符串中第一个匹配项的下标](https://github.com/Sunny-117/js-challenges/issues/447)\n- [不同的子序列](https://github.com/Sunny-117/js-challenges/issues/448)\n- [最长重复子串](https://github.com/Sunny-117/js-challenges/issues/449)\n\n# 场景题\n\n- [Markdown 文本解析](https://github.com/Sunny-117/js-challenges/issues/504)\n\n\n社区建议收集区：https://github.com/Sunny-117/js-challenges/discussions\n\n## 关于捐赠\n\n本项目会持续更新\n\n整理不易，如果您觉得本项目对您有帮助，您可以通过支付宝或微信，扫描二维码，捐赠 X 元，^\\_^，谢谢！\n\n\u003cimg src=\"./alipay.jpg\" width=\"200\"\u003e \u003cimg src='./weixin.png' width=\"200\"\u003e\n\n## 📝 License\n\nCopyright © 2022 [sunny-117](https://github.com/sunny-117).\u003cbr /\u003e\nThis project is [MIT](https://zh.wikipedia.org/zh-cn/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89) licensed.\n\n---\n\n_This README was generated with ❤️ by [readme-md-generator](https://github.com/kefranabg/readme-md-generator)_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSunny-117%2Fjs-challenges","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSunny-117%2Fjs-challenges","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSunny-117%2Fjs-challenges/lists"}