leetcode.png

一. 数组

题目分类题目编号
数组的遍历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 除自身以外数组的乘积
题解数组篇

二. 字符串

题目分类题目编号
字符520 检测大写字母
回文串的定义125 验证回文串
公共前缀14 最长公共前缀
单词434 字符串中的单词数 58 最后一个单词的长度
字符串的反转344 反转字符串 541 反转字符串 II 557 反转字符串中的单词 III 151 反转字符串中的单词
字符的统计387 字符串中的第一个唯一字符 389 找不同 383 赎金信 242 有效的字母异位词 49 字母异位词分组 451 根据字符出现频率排序 423 从英文中重建数字 657 机器人能否返回原点 551 学生出勤记录 I 696 计数二进制子串 467 环绕字符串中唯一的子字符串 535 TinyURL 的加密与解密
数字与字符串间转换299 猜数字游戏 412 Fizz Buzz 506 相对名次 539 最小时间差 553 最优除法 537 复数乘法 592 分数加减运算 640 求解方程 38 外观数列 443 压缩字符串 8 字符串转换整数 (atoi) 13 罗马数字转整数 12 整数转罗马数字 273 整数转换英文表示 165 比较版本号 481 神奇字符串
子序列392 判断子序列 524 通过删除字母匹配到字典里最长单词 521 最长特殊序列 Ⅰ 522 最长特殊序列 II
高精度运算66 加一 67 二进制求和 415 字符串相加 43 字符串相乘 306 累加数
字符串变换482 密钥格式化 6 Z 字形变换 68 文本左右对齐
字符串匹配28 找出字符串中第一个匹配项的下标 686 重复叠加字符串匹配 459 重复的子字符串 214 最短回文串
中心拓展法5 最长回文子串 647 回文子串

三. 数与位

题目分类题目编号
数字的位操作7 整数反转 9 回文数 479 最大回文数乘积 564 寻找最近的回文数 231 2 的幂 342 4 的幂 326 3 的幂 504 七进制数 263 丑数 190 颠倒二进制位 191 位 1 的个数 476 数字的补数 461 汉明距离 477 汉明距离总和 693 交替位二进制数 393 UTF-8 编码验证 172 阶乘后的零 458 可怜的小猪 258 各位相加 319 灯泡开关 405 数字转换为十六进制数 171 Excel 表列序号 168 Excel 表列名称 670 最大交换 233 数字 1 的个数 357 统计各位数字都不同的数字个数 400 第 N 位数字
简单数学题492 构造矩形 29 两数相除 507 完美数
快速幂50 Pow(x, n) 372 超级次方

四. 栈与递归

题目分类题目编号
用栈访问最后若干元素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 个升序链表

六. 哈希表

题目分类题目编号
哈希表的查找、插入及删除217 存在重复元素 633 平方数之和 349 两个数组的交集 128 最长连续序列 202 快乐数 500 键盘行 290 单词规律 532 数组中的 k-diff 数对 205 同构字符串 166 分数到小数 466 统计重复个数 138 复制带随机指针的链表
哈希表与索引1 两数之和 167 两数之和 II - 输入有序数组 599 两个列表的最小索引总和 219 存在重复元素 II 220 存在重复元素 III
哈希表与统计594 最长和谐子序列 350 两个数组的交集 II 554 砖墙 609 在系统中查找重复文件 454 四数相加 II 18 四数之和
哈希表与前缀和560 和为 K 的子数组 523 连续的子数组和 525 连续数组

七. 贪心算法

题目分类题目编号
数组与贪心算法605 种花问题 121 买卖股票的最佳时机 122 买卖股票的最佳时机 II 561 数组拆分 455 分发饼干 575 分糖果 135 分发糖果 409 最长回文串 621 任务调度器 179 最大数 56 合并区间 57 插入区间 228 汇总区间 452 用最少数量的箭引爆气球 435 无重叠区间 646 最长数对链 406 根据身高重建队列 48 旋转图像 169 多数元素 215 数组中的第 K 个最大元素 75 颜色分类 324 摆动排序 II 517 超级洗衣机 649 Dota2 参议院 678 有效的括号字符串 420 强密码检验器
子数组与贪心算法53 最大子数组和 134 加油站 581 最短无序连续子数组 152 乘积最大子数组
子序列与贪心算法334 递增的三元子序列 376 摆动序列 659 分割数组为连续子序列
数字与贪心343 整数拆分
单调栈法496 下一个更大元素 I 503 下一个更大元素 II 456 132 模式 316 去除重复字母 402 移掉 K 位数字 321 拼接最大数 84 柱状图中最大的矩形 85 最大矩形

八. 双指针法

题目分类题目编号
头尾指针345 反转字符串中的元音字母 680 验证回文串 II 167 两数之和 II - 输入有序数组 15 三数之和 16 最接近的三数之和 18 四数之和 11 盛最多水的容器 42 接雨水
同向双指针、滑动窗口27 移除元素 26 删除有序数组中的重复项 80 删除有序数组中的重复项 II 83 删除排序链表中的重复元素 82 删除排序链表中的重复元素 II 611 有效三角形的个数 187 重复的 DNA 序列 643 子数组最大平均数 I 674 最长连续递增序列 209 长度最小的子数组 3 无重复字符的最长子串 438 找到字符串中所有字母异位词 567 字符串的排列 424 替换后的最长重复字符 76 最小覆盖子串 30 串联所有单词的子串
分段双指针86 分隔链表 328 奇偶链表 160 相交链表 88 合并两个有序数组 475 供暖器
快慢指针141 环形链表 142 环形链表 II 143 重排链表 234 回文链表 457 环形数组是否存在循环 287 寻找重复数

九. 树

题目分类题目编号
树与递归100 相同的树 222 完全二叉树的节点个数 101 对称二叉树 226 翻转二叉树 437 路径总和 III 563 二叉树的坡度 617 合并二叉树 508 出现次数最多的子树元素和 572 另一棵树的子树 543 二叉树的直径 654 最大二叉树 687 最长同值路径 87 扰乱字符串
树的层次遍历102 二叉树的层序遍历 429 undefined 690 员工的重要性 559 undefined 662 二叉树最大宽度 671 二叉树中第二小的节点 513 找树左下角的值 515 在每个树行中找最大值 637 二叉树的层平均值 103 二叉树的锯齿形层序遍历 107 二叉树的层序遍历 II 257 二叉树的所有路径 623 在二叉树中增加一行 653 两数之和 IV - 输入二叉搜索树 104 二叉树的最大深度 111 二叉树的最小深度 112 路径总和 113 路径总和 II 129 求根节点到叶节点数字之和 404 左叶子之和 199 二叉树的右视图 655 输出二叉树 116 填充每个节点的下一个右侧节点指针 117 填充每个节点的下一个右侧节点指针 II
树的前序遍历144 二叉树的前序遍历 589 undefined
树的前序序列化606 根据二叉树创建字符串 331 验证二叉树的前序序列化 652 寻找重复的子树 297 二叉树的序列化与反序列化 449 序列化和反序列化二叉搜索树
树的后序遍历145 二叉树的后序遍历 590 undefined
树的中序遍历与二叉搜索树94 二叉树的中序遍历 700 undefined 530 二叉搜索树的最小绝对差 538 把二叉搜索树转换为累加树 230 二叉搜索树中第 K 小的元素 98 验证二叉搜索树 173 二叉搜索树迭代器 669 修剪二叉搜索树 450 删除二叉搜索树中的节点 110 平衡二叉树 95 不同的二叉搜索树 II 108 将有序数组转换为二叉搜索树 109 有序链表转换二叉搜索树
重构二叉树105 从前序与中序遍历序列构造二叉树 106 从中序与后序遍历序列构造二叉树
二叉树的展开114 二叉树展开为链表
最近公共祖先235 二叉搜索树的最近公共祖先 236 二叉树的最近公共祖先
Morris 中序遍历501 二叉搜索树中的众数 99 恢复二叉搜索树
四叉树558 undefined 427 undefined

十. 图与搜索

题目分类题目编号
图的建立与应用565 数组嵌套
深度优先搜索17 电话号码的字母组合 397 整数替换
回溯法526 优美的排列 401 二进制手表 36 有效的数独 37 解数独 51 N 皇后 52 N 皇后 II 77 组合 39 组合总和 216 组合总和 III 40 组合总和 II 46 全排列 47 全排列 II 31 下一个排列 556 下一个更大元素 III 60 排列序列 491 递增子序列 78 子集 90 子集 II 79 单词搜索 93 复原 IP 地址 332 重新安排行程
回溯法与表达式241 为运算表达式设计优先级 282 给表达式添加运算符 679 24 点游戏
回溯法与括号22 括号生成 301 删除无效的括号
回溯法与贪心488 祖玛游戏
广度优先搜索133 克隆图 200 岛屿数量 695 岛屿的最大面积 463 岛屿的周长 542 01 矩阵 130 被围绕的区域 417 太平洋大西洋水流问题 529 扫雷游戏 127 单词接龙 126 单词接龙 II 433 最小基因变化 675 为高尔夫比赛砍树
并查集547 省份数量 684 冗余连接 685 冗余连接 II
拓扑排序399 除法求值 207 课程表 210 课程表 II
有限状态自动机65 有效数字 468 验证 IP 地址

十一. 二分查找

题目分类题目编号
二分查找应用 (简单)374 猜数字大小 35 搜索插入位置 278 第一个错误的版本 367 有效的完全平方数 69 x 的平方根 441 排列硬币
二分查找应用 (中等)34 在排序数组中查找元素的第一个和最后一个位置 540 有序数组中的单一元素 275 H 指数 II 436 寻找右区间 300 最长递增子序列 354 俄罗斯套娃信封问题 658 找到 K 个最接近的元素 162 寻找峰值 4 寻找两个正序数组的中位数
二分查找与旋转数组153 寻找旋转排序数组中的最小值 154 寻找旋转排序数组中的最小值 II 33 搜索旋转排序数组 81 搜索旋转排序数组 II
二分查找与矩阵74 搜索二维矩阵 240 搜索二维矩阵 II
二分答案法378 有序矩阵中第 K 小的元素 668 乘法表中第 k 小的数 410 分割数组的最大值 483 最小好进制

十二. 二进制运算的应用

题目分类题目编号
异或的应用89 格雷编码 136 只出现一次的数字 137 只出现一次的数字 II 260 只出现一次的数字 III 268 丢失的数字
与或非的应用371 两整数之和 318 最大单词长度乘积 201 数字范围按位与

十三. 动态规划

题目分类题目编号
数组中的动态规划509 二叉搜索树中的中序后继 II 70 爬楼梯 338 比特位计数 45 跳跃游戏 II 55 跳跃游戏 198 打家劫舍 213 打家劫舍 II 650 只有两个键的键盘 91 解码方法 639 解码方法 II 552 学生出勤记录 II 123 买卖股票的最佳时机 III 188 买卖股票的最佳时机 IV 309 最佳买卖股票时机含冷冻期 32 最长有效括号 264 丑数 II 313 超级丑数 403 青蛙过河
子数组、子序列中的动态规划689 三个无重叠子数组的最大和 413 等差数列划分 446 等差数列划分 II - 子序列 368 最大整除子集 416 分割等和子集 279 完全平方数
背包问题322 零钱兑换 518 零钱兑换 II 474 一和零 494 目标和 377 组合总和 Ⅳ
矩阵中的动态规划62 不同路径 63 不同路径 II 64 最小路径和 120 三角形最小路径和 576 出界的路径数 688 骑士在棋盘上的概率 221 最大正方形 629 K 个逆序对数组 174 地下城游戏 96 不同的二叉搜索树 329 矩阵中的最长递增路径
动态规划与字符串匹配583 两个字符串的删除操作 72 编辑距离 97 交错字符串 115 不同的子序列 516 最长回文子序列 132 分割回文串 II 131 分割回文串 139 单词拆分 140 单词拆分 II 514 自由之路 10 正则表达式匹配 44 通配符匹配
状态压缩动态规划464 我能赢吗 691 贴纸拼词 698 划分为 k 个相等的子集 638 大礼包 473 火柴拼正方形
区间中的动态规划486 预测赢家 664 奇怪的打印机 375 猜数字大小 II 312 戳气球 546 移除盒子
树形 dp337 打家劫舍 III 124 二叉树中的最大路径和
数位 dp233 数字 1 的个数 600 不含连续 1 的非负整数

十四. 数据结构

题目分类题目编号
数据结构设计——栈与队列225 用队列实现栈 232 用栈实现队列 284 顶端迭代器 622 undefined 641 undefined 155 最小栈
数据结构设计——哈希表676 实现一个魔法字典 355 设计推特 380 O(1) 时间插入、删除和获取随机元素 381 O(1) 时间插入、删除和获取随机元素 - 允许重复
数据结构设计——哈希与双向链表432 全 O(1) 的数据结构 146 LRU 缓存 460 LFU 缓存
前缀树208 实现 Trie (前缀树) 211 添加与搜索单词 - 数据结构设计 648 单词替换 386 字典序排数 677 键值映射 472 连接词 421 数组中两个数的最大异或值 212 单词搜索 II 336 回文对 440 字典序的第 K 小数字
23 合并 K 个升序链表 373 查找和最小的 K 对数字 378 有序矩阵中第 K 小的元素 632 最小区间 347 前 K 个高频元素 692 前 K 个高频单词 502 IPO 630 课程表 III 407 接雨水 II 295 数据流的中位数 480 滑动窗口中位数
树状数组307 区域和检索 - 数组可修改 315 计算右侧小于当前元素的个数 493 翻转对 327 区间和的个数 673 最长递增子序列的个数
线段树699 掉落的方块
平衡树 (set/map)352 将数据流变为多个不相交区间 218 天际线问题 363 矩形区域不超过 K 的最大数值和

十五. 采样

题目分类题目编号
按权值采样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

数组与矩阵

  1. 数组中重复的数字
  2. 二维数组中的查找
  3. 替换空格
  4. 顺时针打印矩阵
  5. 第一个只出现一次的字符位置

栈队列堆

  1. 用两个栈实现队列
  2. 包含 min 函数的栈
  3. 栈的压入、弹出序列
  4. 最小的 K 个数
    41.1 数据流中的中位数
    41.2 字符流中第一个不重复的字符
  5. 滑动窗口的最大值

双指针

57.1 和为 S 的两个数字
57.2 和为 S 的连续正数序列
58.1 翻转单词顺序列
58.2 左旋转字符串

链表

  1. 从尾到头打印链表
    18.1 在 O(1) 时间内删除链表节点
    18.2 删除链表中重复的结点
  2. 链表中倒数第 K 个结点
  3. 链表中环的入口结点
  4. 反转链表
  5. 合并两个排序的链表
  6. 复杂链表的复制
  7. 两个链表的第一个公共结点

  1. 重建二叉树
  2. 二叉树的下一个结点
  3. 树的子结构
  4. 二叉树的镜像
  5. 对称的二叉树
    32.1 从上往下打印二叉树
    32.2 把二叉树打印成多行
    32.3 按之字形顺序打印二叉树
  6. 二叉搜索树的后序遍历序列
  7. 二叉树中和为某一值的路径
  8. 二叉搜索树与双向链表
  9. 序列化二叉树
  10. 二叉查找树的第 K 个结点
    55.1 二叉树的深度
    55.2 平衡二叉树
  11. 树中两个节点的最低公共祖先

贪心思想

  1. 剪绳子
  2. 股票的最大利润

二分查找

  1. 旋转数组的最小数字
  2. 数字在排序数组中出现的次数

分治

  1. 数值的整数次方

搜索

  1. 矩阵中的路径
  2. 机器人的运动范围
  3. 字符串的排列

排序

  1. 调整数组顺序使奇数位于偶数前面
  2. 把数组排成最小的数
  3. 数组中的逆序对

动态规划

10.1 斐波那契数列
10.2 矩形覆盖
10.3 跳台阶
10.4 变态跳台阶

  1. 连续子数组的最大和
  2. 礼物的最大价值
  3. 最长不含重复字符的子字符串
  4. 丑数
  5. n 个骰子的点数
  6. 构建乘积数组

数学

  1. 数组中出现次数超过一半的数字
  2. 圆圈中最后剩下的数
  3. 从 1 到 n 整数中 1 出现的次数

位运算

  1. 二进制中 1 的个数
  2. 数组中只出现一次的数字

其它

  1. 打印从 1 到最大的 n 位数
  2. 正则表达式匹配
  3. 表示数值的字符串
  4. 数字序列中的某一位数字
  5. 把数字翻译成字符串
  6. 扑克牌顺子
  7. 求 1+2+3+...+n
  8. 不用加减乘除做加法
  9. 把字符串转换成整数

资料来源

链接:https://juejin.cn/post/7170873189482889223/