# algorithm **Repository Path**: null_862_1245/algorithm ## Basic Information - **Project Name**: algorithm - **Description**: leetcode练习 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-05-05 - **Last Updated**: 2024-04-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## leetcode题 ### 数据结构 #### 1、字符串 - [x] [3.无重复字符的最长子串](./data-structure/string/3.无重复字符的最长子串.js) - [x] [14.最长公共前缀](./data-structure/string/14.最长公共前缀.js) - [x] [557.反转字符串中的单词-iii](./data-structure/string/557.反转字符串中的单词-iii.js) - [x] [76.最小覆盖子串(困难)](./data-structure/string/76.最小覆盖子串.js) - [x] [2423.删除字符使频率相同](./data-structure/string/2423.删除字符使频率相同.js) - [x] [796.旋转字符串](./data-structure/string/796.旋转字符串.js) - [x] [1528.重新排列字符串](./data-structure/string/1528.重新排列字符串.js) - [x] [28.找出字符串中第一个匹配项的下标](./data-structure/string/28.找出字符串中第一个匹配项的下标.js) - [ ] 44.通配符匹配 #### 2、数组 - [x] [1.两数之和](./data-structure/array/1.两数之和.js) - [x] [167.两数之和 II - 输入有序数组](./data-structure/array/167.两数之和-ii-输入有序数组.js) - [x] [15.三数之和](./data-structure/array/15.三数之和.js) - [x] [18.四数之和](./data-structure/array/18.四数之和.js) - [x] [26.删除有序数组中的重复项](./data-structure/array/26.删除有序数组中的重复项.js) - [x] [27.移除元素](./data-structure/array/27.移除元素.js) - [x] [31.下一个排列](./data-structure/array/31.下一个排列.js) - [x] [128.最长连续序列](./data-structure/array/128.最长连续序列.js) - [x] [674.最长连续递增序列](./data-structure/array/674.最长连续递增序列.js) #### 3、栈 - [x] [1614.括号的最大嵌套深度](./data-structure/stack/1614.括号的最大嵌套深度.js) - [x] [20.有效的括号](./data-structure/stack/20.有效的括号.js) - [x] [71.简化路径](./data-structure/stack/71.简化路径.js) - [x] [155.最小栈](./data-structure/stack/155.最小栈.js) - [x] [227.基本计算器-ii](./data-structure/stack/227.基本计算器-ii.js) - [x] [150.逆波兰表达式求值](./data-structure/stack/150.逆波兰表达式求值.js) - [x] [739.每日温度](./data-structure/stack/739.每日温度.js) - [x] [1249.移除无效的括号](./data-structure/stack/1249.移除无效的括号.js) - [x] [496.下一个更大元素 I](./data-structure/stack/496.下一个更大元素-i.js) - [ ] 503 下一个更大元素 II - [x] [636.函数的独占时间](./data-structure/stack/636.函数的独占时间.js) #### 4、队列 - [x] [232.用栈实现队列](./data-structure/queue/232.用栈实现队列.js) - [x] [239.滑动窗口最大值](./data-structure/queue/239.滑动窗口最大值.js) - [x] [933.最近的请求次数](./data-structure/queue/933.最近的请求次数.js) - [x] [621.任务调度器](./data-structure/queue/621.任务调度器.js) - [ ] 622.设计循环队列 - [ ] 1670.设计前中后队列 #### 5、哈希表 - [x] [136.只出现一次的数字](./data-structure/hash-table/136.只出现一次的数字.js) - [x] [217.存在重复元素](./data-structure/hash-table/217.存在重复元素.js) - [x] [242.有效的字母异位词](./data-structure/hash-table/242.有效的字母异位词.js) - [x] [560.和为K的子数组](./data-structure/array/560.和为k的子数组.js) #### 6、链表 - [x] [141.环形链表](./data-structure/linked-list/141.环形链表.js) - [x] [142.环形链表-ii](./data-structure/linked-list/142.环形链表-ii.js) - [x] [160.相交链表](./data-structure/linked-list/160.相交链表.js) - [ ] 剑指 Offer 22. 链表中倒数第k个节点 - [x] [148.排序链表](./data-structure/linked-list/148.排序链表.js) - [x] [206.反转链表](./data-structure/linked-list/206.反转链表.js) - [ ] 92.反转链表-ii - [ ] 25. K个一组翻转链表 - [x] [21.合并两个有序链表](./data-structure/linked-list/21.合并两个有序链表.js) - [x] [237.删除链表中的节点](./data-structure/linked-list/237.删除链表中的节点.js) - [x] [19.删除链表的倒数第-n-个结点](./algorithm/two-pointers/19.删除链表的倒数第-n-个结点.js) - [x] [83.删除排序链表中的重复元素](./data-structure/linked-list/83.删除排序链表中的重复元素.js) - [ ] [82.删除排序链表中的重复元素-ii](./data-structure/linked-list/82.删除排序链表中的重复元素-ii.js) - [x] [202.快乐数](./data-structure/linked-list/202.快乐数.js) - [ ] 445.两数相加-ii #### 7、树 - [ ] 208.实现 Trie (前缀树) - [x] [144.二叉树的前序遍历](./data-structure/tree/144.二叉树的前序遍历.js) - [x] [94.二叉树的中序遍历](./data-structure/tree/94.二叉树的中序遍历.js) - [x] [145.二叉树的后序遍历](./data-structure/tree/145.二叉树的后序遍历.js) - [x] [590.N叉树的后序遍历](./data-structure/tree/590.N叉树的后序遍历.js) - [x] [104.二叉树的最大深度](./algorithm/DFS+BFS/104.二叉树的最大深度.js) - [x] [105.从前序与中序遍历序列构造二叉树](./data-structure/tree/105.从前序与中序遍历序列构造二叉树.js) - [x] [106.从中序与后序遍历序列构造二叉树](./data-structure/tree/106.从中序与后序遍历序列构造二叉树.js) - [x] [889.根据前序和后序遍历构造二叉树](./data-structure/tree/889.根据前序和后序遍历构造二叉树.js) - [x] [617. 合并二叉树](./data-structure/tree/617.合并二叉树.js) - [ ] 700.二叉搜索树中的搜索 - [x] [98.验证二叉搜索树](./data-structure/tree/binary-search-tree/98.验证二叉搜索树.js) - [x] [501.二叉搜索树中的众数](./data-structure/tree/binary-search-tree/501.二叉搜索树中的众数.js) - [ ] 701.二叉搜索树中的插入操作 - [ ] 450.删除二叉搜索树中的节点 - [ ] 108.将有序数组转换为二叉搜索树 - [x] [538.把二叉搜索树转换为累加树](./data-structure/tree/binary-search-tree/538.把二叉搜索树转换为累加树.js) - [ ] 1382.将二叉搜索树变平衡 - [x] [110.平衡二叉树](./data-structure/tree/110.平衡二叉树.js) - [ ] 222.完全二叉树的节点个数 - [ ] 235.二叉搜索树的最近公共祖先 - [x] [226.翻转二叉树](./data-structure/tree/226.翻转二叉树.js) - [x] [236.二叉树的最近公共祖先](./data-structure/tree/236.二叉树的最近公共祖先.js) #### 8、堆 ### 算法思想 #### 1、递归 - [ ] 207. 课程表 #### 2、回溯算法 ##### 组合 - [x] [77.组合](./algorithm/backtracking/77.组合.js) - [x] [39.组合总和](./algorithm/backtracking/39.组合总和.js) - [x] [40.组合总和-ii](./algorithm/backtracking/40.组合总和-ii.js) - [x] [22.括号生成](./algorithm/backtracking/22.括号生成.js) ##### 子集 - [x] [78.子集](./algorithm/backtracking/78.子集.js) - [x] [90.子集-ii](./algorithm/backtracking/90.子集-ii.js) ##### 排列 - [x] [46.全排列](./algorithm/backtracking/46.全排列.js) - [x] [47.全排列-ii](./algorithm/backtracking/47.全排列-ii.js) - [x] [面试题 08.07. 无重复字符串的排列组合](./algorithm/backtracking/面试题08.07.无重复字符串的排列组合.js) - [x] [面试题 08.08. 有重复字符串的排列组合](./algorithm/backtracking/面试题08.08.有重复字符串的排列组合.js) ##### 分割 - [x] [93.复原 IP 地址](./algorithm/backtracking/93.复原-ip-地址.js) ##### 棋盘 - [ ] 51.N皇后 ##### 其他 - [ ] 491.递增子序列 #### 3、DFS深度优先、BFS广度优先 - [x] [100.相同的树](./algorithm/DFS+BFS/100.相同的树.js) - [x] [101.对称二叉树](./algorithm/DFS+BFS/101.对称二叉树.js) - [x] [102.二叉树的层序遍历](./algorithm/DFS+BFS/102.二叉树的层序遍历.js) - [x] [107.二叉树的层序遍历-ii](./algorithm/DFS+BFS/107.二叉树的层序遍历-ii.js) - [x] [103.二叉树的锯齿形层序遍历](./algorithm/DFS+BFS/103.二叉树的锯齿形层序遍历.js) - [x] [111.二叉树的最小深度](./algorithm/DFS+BFS/111.二叉树的最小深度.js) - [ ] 124.二叉树中的最大路径和 - [x] [200.岛屿数量](./algorithm/DFS+BFS/200.岛屿数量.js) - [x] [1254.统计封闭岛屿的数目](./algorithm/DFS+BFS/1254.统计封闭岛屿的数目.js) - [ ] 407.接雨水-ii - [x] [695.岛屿的最大面积](./algorithm/DFS+BFS/695.岛屿的最大面积.js) - [x] [994.腐烂的橘子](./algorithm/DFS+BFS/994.腐烂的橘子.js) - [ ] 130.被围绕的区域 - [ ] 529.扫雷游戏 - [ ] 752.打开转盘锁 #### 4、分治算法 - [x] [50.Pow(x, n)](./algorithm/binary-search/50.pow-x-n.js) - [x] 169.多数元素 - [x] [215.数组中的第k个最大元素](./algorithm/sort/215.数组中的第k个最大元素.js) #### 5、排序 - [x] [912.排序数组](./algorithm/sort/912.排序数组.js) - [ ] 506.相对名次 - [ ] 373.查找和最小的 K 对数字 - [ ] 703.数据流中的第 K 大元素 - [ ] 347.前 K 个高频元素 - [x] [56.合并区间](./algorithm/sort/56.合并区间.js) - [x] [179.最大数](./algorithm/sort/179.最大数.js) - [ ] 23.合并k个升序链表 - [ ] 452.用最少数量的箭引爆气球 - [x] [969.煎饼排序](./algorithm/sort/969.煎饼排序.js) - [ ] 2558.从数量最多的堆取走礼物 - [ ] 1046. 最后一块石头的重量 #### 6、双指针 - [x] [11.盛最多水的容器](./algorithm/two-pointers/11.盛最多水的容器.js) - [x] [42.接雨水](./algorithm/two-pointers/42.接雨水.js) - [x] [88.合并两个有序数组](./data-structure/array/88.合并两个有序数组.js) - [x] [19.删除链表的倒数第-n-个结点](./algorithm/two-pointers/19.删除链表的倒数第-n-个结点.js) - [ ] 876. 链表的中间结点 - [x] [234.回文链表](./algorithm/two-pointers/234.回文链表.js) - [x] [344.反转字符串](./algorithm/two-pointers/344.反转字符串.js) #### 7、二分查找 - [x] [704.二分查找](./algorithm/binary-search/704.二分查找.js) - [x] [4.寻找两个正序数组的中位数](./algorithm/binary-search/4.寻找两个正序数组的中位数.js) - [ ] [33.搜索旋转排序数组](./algorithm/binary-search/33.搜索旋转排序数组.js) - [x] [34.在排序数组中查找元素的第一个和最后一个位置](./algorithm/binary-search/34.在排序数组中查找元素的第一个和最后一个位置.js) - [x] [50.Pow(x, n)](./algorithm/binary-search/50.pow-x-n.js) - [x] [392.判断子序列](./algorithm/binary-search/392.判断子序列.js) - [x] [441.排列硬币](./algorithm/binary-search/441.排列硬币.js) - [x] [875.爱吃香蕉的珂珂](./algorithm/binary-search/875.爱吃香蕉的珂珂.js) - [x] [1011.在D天内送达包裹的能力](./algorithm/binary-search/1011.在D天内送达包裹的能力.js) - [x] [315.计算右侧小于当前元素的个数](./algorithm/binary-search/315.计算右侧小于当前元素的个数.js) #### 8、贪心算法 - [x] [455.分发饼干](./algorithm/greedy/455.分发饼干.js) - [x] [860.柠檬水找零](./algorithm/greedy/860.柠檬水找零.js) - [ ] 870.优势洗牌 - [x] [55.跳跃游戏](./algorithm/greedy/55.跳跃游戏.js) - [x] [45.跳跃游戏II](./algorithm/greedy/45.跳跃游戏-ii.js) - [x] [121.买卖股票的最佳时机](./algorithm/dynamic-programming/121.买卖股票的最佳时机.js) - [x] [122.买卖股票的最佳时机-ii](./algorithm/dynamic-programming/122.买卖股票的最佳时机-ii.js) - [x] [738.单调递增的数字](./algorithm/greedy/738.单调递增的数字.js) #### 9、动态规划 ##### 数学归纳问题 - [x] [509.斐波那契数](./algorithm/dynamic-programming/509.斐波那契数.js) - [x] [70.爬楼梯](./algorithm/dynamic-programming/70.爬楼梯.js) ##### 求最值问题 ###### 回文 - [x] [5.最长回文子串](./algorithm/dynamic-programming/5.最长回文子串.js) ###### 买卖股票问题 - [x] [121.买卖股票的最佳时机](./algorithm/dynamic-programming/121.买卖股票的最佳时机.js) - [x] [122.买卖股票的最佳时机-ii](./algorithm/dynamic-programming/122.买卖股票的最佳时机-ii.js) - [x] [123.买卖股票的最佳时机-III](./algorithm/dynamic-programming/123.买卖股票的最佳时机-iii.js) - [ ] 188.买卖股票的最佳时机IV - [ ] 309.买卖股票的最佳时机含冷冻期 - [ ] 714.买卖股票的最佳时机含手续费 ###### 背包问题 - 01背包 - [x] [01背包](./algorithm/dynamic-programming/背包问题/01-背包.js) - 完全背包 - [ ] 完全背包 ###### 零钱兑换 - [x] [322.零钱兑换](./algorithm/dynamic-programming/322.零钱兑换.js) - [ ] [518.零钱兑换 II]() ##### 子序列问题 - [x] [53.最大子序和](./algorithm/dynamic-programming/53.最大子序和.js) - [x] [300.最长递增子序列](./algorithm/dynamic-programming/300.最长递增子序列.js) - [x] [354.俄罗斯套娃信封问题](./algorithm/dynamic-programming/354.俄罗斯套娃信封问题.js) - [ ] 303.区域和检索 - 数组不可变 - [ ] 516.最长回文子序列 - [ ] 583.两个字符串的删除操作 - [x] [72.编辑距离](./algorithm/dynamic-programming/72.编辑距离.js) - [x] [剑指 Offer II 095.最长公共子序列](./algorithm/dynamic-programming/剑指offerII095.最长公共子序列.js) - [ ] 377.组合总和-iv - [ ] 279.完全平方数 #### 10、数学 ##### 整数 - [x] [13.罗马数字转整数](./algorithm/math/13.罗马数字转整数.js) - [x] [12.整数转罗马数字](./algorithm/math/12.整数转罗马数字.js) - [x] [7.整数反转](./algorithm/math/7.整数反转.js) - [x] [8.字符串转换整数-atoi](./algorithm/math/8.字符串转换整数-atoi.js) - [x] [9.回文数](./algorithm/math/9.回文数.js) ##### 位运算 - [x] [67.二进制求和](./algorithm/bit-manipulation/67.二进制求和.js) - [ ] 868.二进制间距 - [x] [191.位-1-的个数](./algorithm/bit-manipulation/191.位-1-的个数.js) - [ ] 233.数字 1 的个数 ##### 前缀和 - [ ] 303.区域和检索-数组不可变 - [ ] 304.二维区域和检索-矩阵不可变 ### 编程设计 - [x] [146.lru-缓存机制](./design/146.lru-缓存机制.js) ## 公司面试真题 #### 字符串 - [x] [敏感字段加密(华为)](./real-question/huawei/string/敏感字段加密.js) #### 数组 - [x] [单词接龙](./real-question/huawei/array/单词接龙.js) #### 逻辑分析 - [x] [快递投放问题](./real-question/huawei/logic/快递投放问题.js) #### 数学问题&位运算 - [x] [经典屏保](./real-question/huawei/math/经典屏保.js) #### 递归 #### 动态规划 #### 贪心