一. 数组
题目分类 | 题目编号 |
---|---|
数组的遍历 | 485 最大连续 1 的个数 495 提莫攻击 414 第三大的数 628 三个数的最大乘积 |
统计数组中的元素 | 645 错误的集合 697 数组的度 448 找到所有数组中消失的数字 442 数组中重复的数据 41 缺失的第一个正数 274 H 指数 |
数组的改变、移动 | 453 最小操作次数使数组元素相等 665 非递减数列 283 移动零 |
二维数组及滚动数组 | 118 杨辉三角 119 杨辉三角 II 661 图片平滑器 598 范围求和 II 419 甲板上的战舰 |
数组的旋转 | 189 轮转数组 396 旋转函数 |
特定顺序遍历二维数组 | 54 螺旋矩阵 59 螺旋矩阵 II 498 对角线遍历 |
二维数组变换 | 566 重塑矩阵 48 旋转图像 73 矩阵置零 289 生命游戏 |
前缀和数组 | 303 区域和检索 - 数组不可变 304 二维区域和检索 - 矩阵不可变 238 除自身以外数组的乘积 |
题解 | 数组篇 |
二. 字符串
三. 数与位
四. 栈与递归
题目分类 | 题目编号 |
---|---|
用栈访问最后若干元素 | 682 棒球比赛 71 简化路径 388 文件的最长绝对路径 |
栈与计算器 | 150 逆波兰表达式求值 227 基本计算器 II 224 基本计算器 |
栈与括号匹配 | 20 有效的括号 636 函数的独占时间 591 标签验证器 32 最长有效括号 |
递归 | 385 迷你语法分析器 341 扁平化嵌套列表迭代器 394 字符串解码 |
五. 链表
题目分类 | 题目编号 |
---|---|
链表的删除 | 203 移除链表元素 237 删除链表中的节点 19 删除链表的倒数第 N 个结点 |
链表的遍历 | 430 undefined |
链表的旋转与反转 | 61 旋转链表 24 两两交换链表中的节点 206 反转链表 92 反转链表 II 25 K 个一组翻转链表 |
链表高精度加法 | 2 两数相加 445 两数相加 II |
链表的合并 | 21 合并两个有序链表 23 合并 K 个升序链表 |
六. 哈希表
七. 贪心算法
八. 双指针法
九. 树
十. 图与搜索
十一. 二分查找
十二. 二进制运算的应用
题目分类 | 题目编号 |
---|---|
异或的应用 | 89 格雷编码 136 只出现一次的数字 137 只出现一次的数字 II 260 只出现一次的数字 III 268 丢失的数字 |
与或非的应用 | 371 两整数之和 318 最大单词长度乘积 201 数字范围按位与 |
十三. 动态规划
十四. 数据结构
十五. 采样
题目分类 | 题目编号 |
---|---|
按权值采样 | 528 交换链表中的节点 497 undefined |
蓄水池抽样 | 382 链表随机节点 398 随机数索引 |
拒绝采样 | 470 undefined 478 undefined 519 范围和相等的最宽索引对 |
十六. 计算几何
题目分类 | 题目编号 |
---|---|
计算几何基础 | 593 有效的正方形 447 回旋镖的数量 223 矩形面积 149 直线上最多的点数 |
分类讨论法 | 335 路径交叉 |
凸包 | 587 安装栅栏 |
覆盖问题 | 391 完美矩形 |
十七. 常用技巧与算法
题目分类 | 题目编号 |
---|---|
博弈论 | 292 Nim 游戏 |
分块 | 239 滑动窗口最大值 164 最大间距 |
倍增法 | 330 按要求补齐数组 |
拓展欧几里得算法 | 365 水壶问题 |
洗牌算法 | 384 打乱数组 |
找规律 | 390 消除游戏 672 灯泡开关 Ⅱ |
分治法 | 395 至少有 K 个重复字符的最长子串 667 优美的排列 II |
排序算法 | 147 对链表进行插入排序 148 排序链表 |
线性筛 | 204 计数质数 |
摩尔投票法 | 229 多数元素 II |
剑指Offer
数组与矩阵
- 数组中重复的数字
- 二维数组中的查找
- 替换空格
- 顺时针打印矩阵
- 第一个只出现一次的字符位置
栈队列堆
- 用两个栈实现队列
- 包含 min 函数的栈
- 栈的压入、弹出序列
- 最小的 K 个数
41.1 数据流中的中位数
41.2 字符流中第一个不重复的字符 - 滑动窗口的最大值
双指针
57.1 和为 S 的两个数字
57.2 和为 S 的连续正数序列
58.1 翻转单词顺序列
58.2 左旋转字符串
链表
- 从尾到头打印链表
18.1 在 O(1) 时间内删除链表节点
18.2 删除链表中重复的结点 - 链表中倒数第 K 个结点
- 链表中环的入口结点
- 反转链表
- 合并两个排序的链表
- 复杂链表的复制
- 两个链表的第一个公共结点
树
- 重建二叉树
- 二叉树的下一个结点
- 树的子结构
- 二叉树的镜像
- 对称的二叉树
32.1 从上往下打印二叉树
32.2 把二叉树打印成多行
32.3 按之字形顺序打印二叉树 - 二叉搜索树的后序遍历序列
- 二叉树中和为某一值的路径
- 二叉搜索树与双向链表
- 序列化二叉树
- 二叉查找树的第 K 个结点
55.1 二叉树的深度
55.2 平衡二叉树 - 树中两个节点的最低公共祖先
贪心思想
- 剪绳子
- 股票的最大利润
二分查找
- 旋转数组的最小数字
- 数字在排序数组中出现的次数
分治
- 数值的整数次方
搜索
- 矩阵中的路径
- 机器人的运动范围
- 字符串的排列
排序
- 调整数组顺序使奇数位于偶数前面
- 把数组排成最小的数
- 数组中的逆序对
动态规划
10.1 斐波那契数列
10.2 矩形覆盖
10.3 跳台阶
10.4 变态跳台阶
- 连续子数组的最大和
- 礼物的最大价值
- 最长不含重复字符的子字符串
- 丑数
- n 个骰子的点数
- 构建乘积数组
数学
- 数组中出现次数超过一半的数字
- 圆圈中最后剩下的数
- 从 1 到 n 整数中 1 出现的次数
位运算
- 二进制中 1 的个数
- 数组中只出现一次的数字
其它
- 打印从 1 到最大的 n 位数
- 正则表达式匹配
- 表示数值的字符串
- 数字序列中的某一位数字
- 把数字翻译成字符串
- 扑克牌顺子
- 求 1+2+3+...+n
- 不用加减乘除做加法
- 把字符串转换成整数