{"id":16751691,"url":"https://github.com/lq782655835/leetcode","last_synced_at":"2025-04-10T15:50:52.098Z","repository":{"id":96217471,"uuid":"163373502","full_name":"lq782655835/leetcode","owner":"lq782655835","description":"个人LeetCode算法题解","archived":false,"fork":false,"pushed_at":"2024-05-05T14:22:22.000Z","size":89,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-24T13:37:07.735Z","etag":null,"topics":["javascript","leetcode"],"latest_commit_sha":null,"homepage":"","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/lq782655835.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-28T06:16:28.000Z","updated_at":"2024-06-28T06:01:19.000Z","dependencies_parsed_at":"2025-02-17T13:37:02.596Z","dependency_job_id":"af0ae4b1-4369-4b00-a0d5-f3e33198fce3","html_url":"https://github.com/lq782655835/leetcode","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/lq782655835%2Fleetcode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lq782655835%2Fleetcode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lq782655835%2Fleetcode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lq782655835%2Fleetcode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lq782655835","download_url":"https://codeload.github.com/lq782655835/leetcode/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248244900,"owners_count":21071363,"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":["javascript","leetcode"],"created_at":"2024-10-13T02:44:38.829Z","updated_at":"2025-04-10T15:50:52.039Z","avatar_url":"https://github.com/lq782655835.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LeetCode算法题解\n\n个人算法实践，详细注释，提供多种解体方案和思路。\n\n## 二分查找\n\n专题文章：[双指针技巧总结](./src/dichotomy/README.md)\n\n二分法一般针对已经`排好序的数组`。\n\n``` js\n// 二分法套路\nfunction dichotomy() {\n    // 左边界\n    var left ...\n    // 右边界\n    var right ...\n    // 记录答案\n    var ans\n    while(left \u003c= right) {\n        // 中间值\n        var middle = Math.floor((left + right) / 2)\n        // 猜测是否满足条件\n        if (guess(middle, ...)) {\n            // 如果满足条件，记录答案\n            ans = middle\n            // 缩小搜索范围，在更小的值中搜索\n            right = middle - 1\n        } else  {\n            // 在更大的值中搜索\n            left = middle + 1\n        }\n    }\n    return ans\n}\n```\n\n更多[二分法技巧](./src/dichotomy/README.md)\n\n* [二分查找](./src/dichotomy/binary-search.js)\u003csup\u003e折半搜索\u003c/sup\u003e\n* [搜索插入位置](./src/dichotomy/search-insert-position.js)\n* [x 的平方根](./src/dichotomy/sqrtx.js)\n* [第一个错误的版本](./src/dichotomy/first-bad-version.js)\n* [寻找比目标字母大的最小字母](./src/dichotomy/find-smallest-letter-greater-than-target.js)\n* [33.搜索旋转排序数组](./src/dichotomy/33-search-in-rotated-sorted-array.js)\n* [153.寻找旋转排序数组中的最小值](./src/dichotomy/153-find-minimum-in-rotated-sorted-array.js)\n\n## 二叉树\n\n专题文章：[二叉树的深度优先遍历与广度优先遍历](./src/tree/README.md)\n\n* [定义二叉搜索树](./src/tree/BinarySearchTree.js)\u003csup\u003e递归\u003c/sup\u003e\n* [相同的树](./src/tree/same-tree.js)\u003csup\u003e递归\u003c/sup\u003e\n* [对称二叉树](./src/tree/symmetric-tree.js)\u003csup\u003e递归、\u003c/sup\u003e\u003csup\u003e技巧\u003c/sup\u003e\n* [二叉搜索树中的搜索](./src/tree/search-in-a-binary-search-tree.js)\u003csup\u003e递归\u003c/sup\u003e\n* [判断二叉树是否是高度平衡的二叉树](./src/tree/balanced-binary-tree.js)\u003csup\u003e递归\u003c/sup\u003e\n* base-traverse 遍历\n    * [二叉树的前序遍历](./src/tree/base-traverse/binary-tree-preorder-traversal.js)\u003csup\u003e递归、\u003c/sup\u003e\u003csup\u003e栈\u003c/sup\u003e\n    * [二叉树的中序遍历](./src/tree/base-traverse/binary-tree-inorder-traversal.js)\u003csup\u003e递归\u003c/sup\u003e\n    * [二叉树的后序遍历](./src/tree/base-traverse/binary-tree-postorder-traversal.js)\u003csup\u003e递归、\u003c/sup\u003e\u003csup\u003e栈\u003c/sup\u003e\n    * [ 将有序数组转换为二叉搜索树](./src/tree/base-traverse/convert-sorted-array-to-binary-search-tree.js)\u003csup\u003e递归（分治）、\u003c/sup\u003e\u003csup\u003e中序遍历的逆操作\u003c/sup\u003e\n* depth-first-search 深度优先\n    * [给定一个二叉树，返回所有从根节点到叶子节点的路径](./src/tree/depth-first-search/binary-tree-paths.js)\u003csup\u003eDFS-递归\u003c/sup\u003e\n    * [路径总和](./src/tree/depth-first-search/path-sum.js)\u003csup\u003eDFS-递归\u003c/sup\u003e\n    * [路径总和2](./src/tree/depth-first-search/path-sum-ii.js)\u003csup\u003eDFS-递归\u003c/sup\u003e\n* breadth-first-search 广度优先\n    * [二叉树的层次遍历 II](./src/tree/breadth-first-search/binary-tree-level-order-traversal-ii.js)\u003csup\u003e队列BFS\u003c/sup\u003e\n* [二叉树的最大深度](./src/tree/maximum-depth-of-binary-tree.js)\u003csup\u003e递归BFS、\u003c/sup\u003e\u003csup\u003e队列BFS\u003c/sup\u003e\n* [二叉树的最小深度](./src/tree/minimum-depth-of-binary-tree.js)\u003csup\u003e递归BFS、\u003c/sup\u003e\u003csup\u003e队列BFS\u003c/sup\u003e\n\n## String\n\n* [回文数](./src/string/palindrome-number.js)\u003csup\u003e技巧、\u003c/sup\u003e\u003csup\u003e双指针法\u003c/sup\u003e\n* [125.验证回文串](./src/string/valid-palindrome.js)\u003csup\u003e技巧、\u003c/sup\u003e\u003csup\u003e双指针法\u003c/sup\u003e\n* [反转字符串中的元音字母](./src/string/reverse-vowels-of-a-string.js)\u003csup\u003e双指针法\u003c/sup\u003e\n* [字符串解码](./src/string/decode-string.js)\u003csup\u003e栈\u003c/sup\u003e\n* [实现strStr()](./src/string/implement-strstr.js) 即实现js中indexOf\n* [字符串相加](./src/string/add-strings.js)\n* [3.无重复字符的最长子串](./src/string/longest-substring-without-repeating-characters.js)\n* [383. 赎金信](./src/string/ransom-note.js)\u003csup\u003ehashmap\u003c/sup\u003e\n\n## 技巧题\n\n许多算法题，除了数据结构外，还有许多是解题思路。换个思维方式或许有更多解法。\n\n* [两数之和](./src/skill/two-sum.js)\u003csup\u003e技巧、\u003c/sup\u003e\u003csup\u003ehashmap\u003c/sup\u003e\n* [两数之和 II - 输入有序数组](./src/skill/two-sum-ii-input-array-is-sorted.js)\n* [反转字符串](./src/skill/reverse-string.js)\u003csup\u003e双指针法\u003c/sup\u003e\n* [排列硬币]('./src/skill/arranging-coins.js)\n\n## 分治（递归）\n\n递归是分治算法思想最常用方法。\n\n递归的三大要素:\n* 第一要素：明确你这个函数想要干什么\n* 第二要素：寻找递归结束条件\n* 第三要素：找出函数的等价关系式(不断缩小参数的范围)\n\n有关递归的一些优化思路:\n1. 考虑是否重复计算\n2. 考虑是否可以自底向上\n\n* 简单案例理解\n    * [fibonacci](./src/recursion/fib.js)\n    * [小青蛙跳台阶](./src/recursion/step.js)\n* [翻转链表](./src/recursion/reverse-node-link.js)\n* [两数的最大公约数](./src/recursion/max-common-divisor.js)\u003csup\u003e递归\u003c/sup\u003e\n\n## 动态规划\n\n* [经典01背包问题](./src/dynamic-programming/package.js)\u003csup\u003e递归、\u003c/sup\u003e\u003csup\u003e动态规划\u003c/sup\u003e\n* [1143. 最长公共子序列](./src/dynamic-programming/longest-common-subsequence.js)\u003csup\u003e递归、\u003c/sup\u003e\u003csup\u003e动态规划\u003c/sup\u003e\n* [字符串最小编辑距离](./src/dynamic-programming/string-min-operation.js)\u003csup\u003e动态规划\u003c/sup\u003e\n\n## 参考\n\n* [数据结构和算法](https://www.youtube.com/watch?v=LqymUU_mRpw\u0026list=PLljKjXpjNpgfX5tr-HY3HnwiXDM1WIzb-\u0026index=43)\n* [背包问题](https://www.youtube.com/watch?v=8LusJS5-AGo\u0026list=PLLXdhg_r2hKA7DPDsunoDZ-Z769jWn4R8)\n\n* [双指针技巧总结](https://labuladong.gitbook.io/algo/di-ling-zhang-bi-du-xi-lie/shuang-zhi-zhen-ji-qiao)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flq782655835%2Fleetcode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flq782655835%2Fleetcode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flq782655835%2Fleetcode/lists"}