原地址
GitHub:目录
一、算法思想
1. 双指针
1.1 有序数组的 Two Sum
1.2 两数平方和
1.3 反转字符串中的元音字符
1.4 回文字符串
1.5 归并两个有序数组
1.6 判断链表是否存在环
1.7 最长子序列
2. 排序
2.1 kth-element
2.2 出现频率最多的 k 个元素
2.3 按照字符出现次数对字符串排序
2.4 按颜色进行排序
3. 贪心思想
3.1 分配饼干
3.2 不重叠的区间个数
3.3 投飞镖刺破气球
3.4 根据身高和序号重组队列
3.5 买卖股票最大的收益
3.6 买卖股票的最大收益 II
3.7 种植花朵
3.8 判断是否为子序列
3.9 修改一个数成为非递减数组
3.10 子数组最大的和
3.11 分隔字符串使同种字符出现在一起
4. 二分查找
4.1 求开方
4.2 大于给定元素的最小元素
4.3 有序数组的 Single Element
4.4 第一个错误的版本
4.5 旋转数组的最小数字
4.6 查找区间
5. 分治
6. 搜索
6.1 计算在网格中从原点到特定点的最短路径长度
6.2 组成整数的最小平方数数量
6.3 最短单词路径
6.4 查找最大的连通面积
6.5 矩阵中的连通分量数目
6.6 好友关系的连通分量数目
6.7 填充封闭区域
6.8 能到达的太平洋和大西洋的区域
6.9 数字键盘组合
6.10 IP 地址划分
6.11 在矩阵中寻找字符串
6.12 输出二叉树中所有从根到叶子的路径
6.13 排列
6.14 含有相同元素求排列
6.15 组合
6.16 组合求和
6.17 含有相同元素的组合求和
6.18 1-9 数字的组合求和
6.19 子集
6.20 含有相同元素求子集
6.21 分割字符串使得每个部分都是回文数
6.22 数独
6.23 N 皇后
7. 动态规划
7.1 爬楼梯
7.2 强盗抢劫
7.3 强盗在环形街区抢劫
7.4 矩阵的最小路径和
7.5 矩阵的总路径数
7.6 数组区间和
7.7 数组中等差递增子区间的个数
7.8 分割整数的最大乘积
7.9 按平方数来分割整数
7.10 分割整数构成字母字符串
7.11 最长递增子序列
7.12 一组整数对能够构成的最长链
7.13 最长摆动子序列
7.14 最长公共子序列
7.15 划分数组为和相等的两部分
7.16 改变一组数的正负号使得它们的和为一给定数
7.17 01 字符构成最多的字符串
7.18 找零钱的最少硬币数
7.19 找零钱的硬币数组合
7.20 字符串按单词列表分割
7.21 组合总和
7.22 需要冷却期的股票交易
7.23 需要交易费用的股票交易
7.24 只能进行两次的股票交易
7.25 只能进行 k 次的股票交易
7.26 删除两个字符串的字符使它们相等
7.27 编辑距离
7.28 复制粘贴字符
8. 数学
8.1 生成素数序列
8.2 7 进制
8.3 16 进制
8.4 26 进制
8.5 统计阶乘尾部有多少个 0
8.6 二进制加法
8.7 字符串加法
8.8 改变数组元素使所有的数组元素都相等
8.9 数组中出现次数多于 n / 2 的元素
8.10 平方数
8.11 3 的 n 次方
8.12 乘积数组
8.13 找出数组中的乘积最大的三个数
二、数据结构相关
1. 链表
1.1 找出两个链表的交点
1.2 链表反转
1.3 归并两个有序的链表
1.4 从有序链表中删除重复节点
1.5 删除链表的倒数第 n 个节点
1.6 交换链表中的相邻结点
1.7 链表求和
1.8 回文链表
1.9 分隔链表
1.10 链表元素按奇偶聚集
2. 树
2.1 树的高度
2.2 平衡树
2.3 两节点的最长路径
2.4 翻转树
2.5 归并两棵树
2.6 判断路径和是否等于一个数
2.7 统计路径和等于一个数的路径数量
2.8 子树
2.9 树的对称
2.10 最小路径
2.11 统计左叶子节点的和
2.12 相同节点值的最大路径长度
2.13 间隔遍历
2.14 找出二叉树中第二小的节点
2.15 一棵树每层节点的平均数
2.16 得到左下角的节点
2.17 非递归实现二叉树的前序遍历
2.18 非递归实现二叉树的后序遍历
2.19 非递归实现二叉树的中序遍历
2.20 修剪二叉查找树
2.21 寻找二叉查找树的第 k 个元素
2.22 把二叉查找树每个节点的值都加上比它大的节点的值
2.23 二叉查找树的最近公共祖先
2.24 二叉树的最近公共祖先
2.25 从有序数组中构造二叉查找树
2.26 根据有序链表构造平衡的二叉查找树
2.27 在二叉查找树中寻找两个节点,使它们的和为一个给定值
2.28 在二叉查找树中查找两个节点之差的最小绝对值
2.29 寻找二叉查找树中出现次数最多的值
2.30 实现一个 Trie
2.31 实现一个 Trie,用来求前缀和
3. 栈和队列
3.1 用栈实现队列
3.2 用队列实现栈
3.3 最小值栈
3.4 用栈实现括号匹配
3.5 数组中元素与下一个比它大的元素之间的距离
3.6 循环数组中比当前元素大的下一个元素
4. 哈希表
4.1 数组中两个数的和为给定值
4.2 判断数组是否含有重复元素
4.3 最长和谐序列
4.4 最长连续序列
5. 字符串
5.1 字符串循环移位包含
5.2 字符串循环移位
5.3 字符串中单词的翻转
5.4 两个字符串包含的字符是否完全相同
5.5 计算一组字符集合可以组成的回文字符串的最大长度
5.6 字符串同构
5.7 回文子字符串个数
5.8 判断一个整数是否是回文数
5.9 统计二进制字符串中连续 1 和连续 0 数量相同的子字符串个数
6. 数组与矩阵
6.1 把数组中的 0 移到末尾
6.2 改变矩阵维度
6.3 找出数组中最长的连续 1
6.4 有序矩阵查找
6.5 有序矩阵的 Kth Element
6.6 一个数组元素在 [1, n] 之间,其中一个数被替换为另一个数,找出重复的数和丢失的数
6.7 找出数组中重复的数,数组值在 [1, n] 之间
6.8 数组相邻差值的个数
6.9 数组的度
6.10 对角元素相等的矩阵
6.11 嵌套数组
6.12 分隔数组
7. 图
7.1 判断是否为二分图
7.2 课程安排的合法性
7.3 课程安排的顺序
7.4 冗余连接
8. 位运算
8.1 统计两个数的二进制表示有多少位不同
8.2 数组中唯一一个不重复的元素
8.3 找出数组中缺失的那个数
8.4 数组中不重复的两个元素
8.5 翻转一个数的比特位
8.6 不用额外变量交换两个整数
8.7 判断一个数是不是 2 的 n 次方
8.8 判断一个数是不是 4 的 n 次方
8.9 判断一个数的位级表示是否不会出现连续的 0 和 1
8.10 求一个数的补码
8.11 实现整数的加法
8.12 字符串数组最大乘积
8.13 统计从 0 ~ n 每个数的二进制表示中 1 的个数