Learning algorithm from leetCode, Work hard , boy .
cn.yydcyy md 文档格式排序
cn.yydcyy
一 算法** | |||
1 双指针 | |||
1. 有序数组的 Two Sum 167 2. 两数平方和 633 3. 反转字符串中的元音字符 345 4. 回文字符串 680 5. 归并两个有序数组 88 6. 判断链表是否存在环 141 7. 最长子序列 524 |
|||
2 排序 | |||
2.1 快速选择quickSelection | |||
2.2 堆heap | |||
1. Kth Element | |||
2.3 BucketSort | |||
1. 出现频率最多的 k 个元素 2. 按照字符出现次数对字符串排序 |
|||
2.4 荷兰国旗问题DutchFlag | |||
1. 按颜色进行排序 | |||
3 贪心** | |||
1. 分配饼干 2. 不重叠的区间个数 3. 投飞镖刺破气球 4. 根据身高和序号重组队列 5. 买卖股票最大的收益 6. 买卖股票的最大收益 II 7. 种植花朵 8. 判断是否为子序列 9. 修改一个数成为非递减数组 10. 子数组最大的和 11. 分隔字符串使同种字符出现在一起 |
|||
4 二分查找 | |||
1. 求开方 2. 大于给定元素的最小元素 3. 有序数组的 Single Element 4. 第一个错误的版本 5. 旋转数组的最小数字 6. 查找区间 |
|||
5 分治divideAndConquer | |||
1. 给表达式加括号 2. 不同的二叉搜索树 |
|||
6 搜索search | |||
6.1 BFS | |||
1. 计算在网格中从原点到特定点的最短路径长度 2. 组成整数的最小平方数数量 3. 最短单词路径 |
|||
6.2 DFS | |||
1. 查找最大的连通面积 2. 矩阵中的连通分量数目 3. 好友关系的连通分量数目 4. 填充封闭区域 5. 能到达的太平洋和大西洋的区域 |
|||
6.3 Backtracking | |||
1. 数字键盘组合 2. IP 地址划分 3. 在矩阵中寻找字符串 4. 输出二叉树中所有从根到叶子的路径 5. 排列 6. 含有相同元素求排列 7. 组合 8. 组合求和 9. 含有相同元素的组合求和 10. 1-9 数字的组合求和 11. 子集 12. 含有相同元素求子集 13. 分割字符串使得每个部分都是回文数 14. 数独 15. N 皇后 |
|||
7 动态规划DP | |||
7.1 斐波那契数列 fibonacci | 1. 爬楼梯 2. 强盗抢劫 3. 强盗在环形街区抢劫 4. 信件错排 5. 母牛生产 |
||
7.2 矩阵路径 matrix path | |||
1. 矩阵的最小路径和 2. 矩阵的总路径数 |
|||
7.3 数组区间 arrayInterval | |||
1. 数组区间和 2. 数组中等差递增子区间的个数 |
|||
7.4 分割整数 splitInteger | |||
1. 分割整数的最大乘积 2. 按平方数来分割整数 3. 分割整数构成字母字符串 |
|||
7.5 最长递增子序列 LIS | |||
1. 最长递增子序列 2. 一组整数对能够构成的最长链 3. 最长摆动子序列 |
|||
7.6 最长公共子序列 LCS | |||
7.7 0-1 背包 napsack | |||
1. 划分数组为和相等的两部分 2. 改变一组数的正负号使得它们的和为一给定数 3. 01 字符构成最多的字符串 4. 找零钱的最少硬币数 5. 找零钱的硬币数组合 6. 字符串按单词列表分割 7. 组合总和 |
|||
7.8 股票交易 stockTrading | |||
1. 需要冷却期的股票交易 2. 需要交易费用的股票交易 3. 只能进行两次的股票交易 4. 只能进行 k 次的股票交易 |
|||
7.9 字符串编辑stringEdit | |||
1. 删除两个字符串的字符使它们相等 2. 编辑距离 3. 复制粘贴字符 |
|||
8 数学Math | |||
8.1 素数分解 primeDecomposition | |||
8.2 整除 | |||
8.3 最大公约数最小公倍数 | |||
1. 生成素数序列 2. 最大公约数 3. 使用位操作和减法求解最大公约数 |
|||
8.4 进制转换 | |||
1. 7 进制 2. 16 进制 3. 26 进制 |
|||
8.5 阶乘 | |||
1. 统计阶乘尾部有多少个 0 | |||
8.6 字符串加法减法 | |||
1. 二进制加法 2. 字符串加法 |
|||
8.7 相遇问题 | |||
1. 改变数组元素使所有的数组元素都相等 | |||
8.8 多数投票问题 | |||
1. 数组中出现次数多于 n / 2 的元素 | |||
8.9 其它 | |||
1. 平方数 2. 3 的 n 次方 3. 乘积数组 4. 找出数组中的乘积最大的三个数 |
|||
二 数据结构相关 | |||
1 链表Linked | |||
1. 找出两个链表的交点 160 2. 链表反转 206 3. 归并两个有序的链表 4. 从有序链表中删除重复节点 5. 删除链表的倒数第 n 个节点 6. 交换链表中的相邻结点 7. 链表求和 8. 回文链表 9. 分隔链表 10. 链表元素按奇偶聚集 |
|||
2 树 tree | |||
2.1 递归 | |||
1. 树的高度 2. 平衡树 3. 两节点的最长路径 4. 翻转树 5. 归并两棵树 6. 判断路径和是否等于一个数 7. 统计路径和等于一个数的路径数量 8. 子树 9. 树的对称 10. 最小路径 11. 统计左叶子节点的和 12. 相同节点值的最大路径长度 13. 间隔遍历 14. 找出二叉树中第二小的节点 |
|||
2.2 层次遍历 | |||
1. 一棵树每层节点的平均数 2. 得到左下角的节点 |
|||
2.3 前中后序遍历 | |||
1. 非递归实现二叉树的前序遍历 2. 非递归实现二叉树的后序遍历 3. 非递归实现二叉树的中序遍历 |
|||
2.4 BST | |||
1. 修剪二叉查找树 2. 寻找二叉查找树的第 k 个元素 3. 把二叉查找树每个节点的值都加上比它大的节点的值 4. 二叉查找树的最近公共祖先 5. 二叉树的最近公共祖先 6. 从有序数组中构造二叉查找树 7. 根据有序链表构造平衡的二叉查找树 8. 在二叉查找树中寻找两个节点,使它们的和为一个给定值 9. 在二叉查找树中查找两个节点之差的最小绝对值 10. 寻找二叉查找树中出现次数最多的值 |
|||
2.5 Trie | |||
1. 实现一个 Trie 2. 实现一个 Trie,用来求前缀和 | |||
3 栈和队列 stackAndQueue | |||
1. 用栈实现队列 2. 用队列实现栈 3. 最小值栈 4. 用栈实现括号匹配 5. 数组中元素与下一个比它大的元素之间的距离 6. 循环数组中比当前元素大的下一个元素 |
|||
4 哈希表HashTable | |||
1. 数组中两个数的和为给定值 2. 判断数组是否含有重复元素 3. 最长和谐序列 4. 最长连续序列 |
|||
5 字符串String | |||
1. 字符串循环移位包含 2. 字符串循环移位 3. 字符串中单词的翻转 4. 两个字符串包含的字符是否完全相同 5. 计算一组字符集合可以组成的回文字符串的最大长度 6. 字符串同构 7. 回文子字符串个数 8. 判断一个整数是否是回文数 9. 统计二进制字符串中连续 1 和连续 0 数量相同的子字符串个数 |
|||
6 数组与矩阵ArraysAndMatrices | |||
1. 把数组中的 0 移到末尾 2. 改变矩阵维度 3. 找出数组中最长的连续 1 4. 有序矩阵查找 5. 有序矩阵的 Kth Element 6. 一个数组元素在 [1, n] 之间,其中一个数被替换为另一个数,找出重复的数和丢失的数 7. 找出数组中重复的数,数组值在 [1, n] 之间 8. 数组相邻差值的个数 9. 数组的度 10. 对角元素相等的矩阵 11. 嵌套数组 12. 分隔数组 |
|||
7 图 Map | |||
7.1 二分图 | |||
1. 判断是否为二分图 | |||
7.2 拓扑排序 | |||
1. 课程安排的合法性 2. 课程安排的顺序 |
|||
7.3 并查集 | |||
1. 冗余连接 | |||
8 位运算 bitOperation | |||
1. 统计两个数的二进制表示有多少位不同 2. 数组中唯一一个不重复的元素 3. 找出数组中缺失的那个数 4. 数组中不重复的两个元素 5. 翻转一个数的比特位 6. 不用额外变量交换两个整数 7. 判断一个数是不是 2 的 n 次方 8. 判断一个数是不是 4 的 n 次方 9. 判断一个数的位级表示是否不会出现连续的 0 和 1 10. 求一个数的补码 11. 实现整数的加法 12. 字符串数组最大乘积 13. 统计从 0 ~ n 每个数的二进制表示中 1 的个数 |
|||