数学:
- 尾部的零
- 斐波纳契数列
- x的平方根
- 大整数乘法
- 骰子求和
- 最多有多少个点在一条直线上
- 超级丑数
比特位操作:
- 将整数A转换为B更新二进制位
- 二进制表示
- O(1)时间检测2的幂次
- 二进制中有多少个1
动态规划:
- 编辑距离正则表达式匹配
- 交叉字符串乘
- 积最大子序列
- 二叉树中的最大路径和
- 不同的路径
- 通配符匹配
堆:
- 滑动窗口的中位数数据流中位数
- 最高频的K个单词
- 接雨水
- 堆化
- 排序矩阵中的从小到大第k个数
二叉树:
- 二叉树中序遍历二叉树的序列化和反序列化
- 子树
- 最近公共祖先
- 二叉树的层次遍历
- 将二叉树拆成链表
- 在二叉查找树中插入节点
二分法:
- 经典二分查找问题二分查找
- 两数组的交
- 区间最小数
- 寻找旋转排序数组中的最小值
- 搜索排序区间
- 寻找峰值
分治法:
- 快速幂两个排序数组的中位数
- 合并K个排序链表
哈希表:
- 变形词子串哈希函数
- 短网址
- 复制带随机指针的链表
- 最小子串覆盖
矩阵:
- 搜索二维矩阵旋转图像
- 岛屿的个数
- 螺旋矩阵
宽度优先搜索:
- 克隆图被围绕的区域
- 拓扑排序
- 单词接龙
链表:
- 实现一个链表的反转链表求和 II
- 删除链表中的元素
- LRU缓存策略
- 合并两个排序链表
- 两个链表的交叉
- 翻转链表 II
- 复制带随机指针的链表
- 带环链表
枚举法
- 统计数字名人确认
- 最长连续上升子序列
- 最大子数组差
- 最长公共前缀
排序:
- 快排摆动排序
- 最大间距
- 最接近零的子数组和
- 最大数
- 四数之和
- 数组划分
- 第K大元素
- 排颜色
深度优先搜索:
- N皇后问题图是否是树
- 带重复元素的排列
- 分割回文串
数组:
- 数组划分逆序对
- 合并区间
- 搜索旋转排序数组
- 最大子数组
- 删除排序数组中的重复数字
- 第二大的数组
- 先递增后递减数组中的最大值
- 两数和 - 输入的数据是有序的
- 两个排序数组的中位数
- 在大数组中查找
- 颜色分类
- 合并排序数组
- 无序数组K小元素
- 中位数
- 奇偶分割数组
贪心:
- 主元素寻找缺失的数
- 买卖股票最佳时机
- 加油站
- 删除数字
- 落单的数
- 最大子数组差
线段树:
- 线段树查询线段树的构造
- 线段树的修改
- 区间求和
- 统计比给定整数小的数的个数
栈:
- 带最小值操作的栈用栈实现队列
- 有效的括号序列
- 简化路径
整数:
- 反转整数将整数A转换为B
- 整数排序
字符串处理:
- 罗马数字转整数回文数
- 乱序字符串
- 有效回文串
- 翻转字符串
- 最长无重复字符的子串
- 字符串压缩
- 比较字符串编辑距离II