Skip to content

Latest commit

 

History

History
551 lines (431 loc) · 75 KB

07.Interview-200-List.md

File metadata and controls

551 lines (431 loc) · 75 KB

LeetCode 面试最常考 200 题(按分类排序)

01. 数组

数组基础题目

题号 标题 题解 标签 难度
0189 轮转数组 Python 数组、数学、双指针 中等
0498 对角线遍历 Python 数组、矩阵、模拟 中等
0048 旋转图像 Python 数组、数学、矩阵 中等
0054 螺旋矩阵 Python 数组、矩阵、模拟 中等
0059 螺旋矩阵 II Python 数组、矩阵、模拟 中等

排序算法题目

冒泡排序题目

题号 标题 题解 标签 难度
0283 移动零 Python 数组、双指针 简单

选择排序题目

题号 标题 题解 标签 难度
0215 数组中的第K个最大元素 Python 数组、分治、快速选择、排序、堆(优先队列) 中等

插入排序题目

题号 标题 题解 标签 难度
0075 颜色分类 Python 数组、双指针、排序 中等

希尔排序题目

题号 标题 题解 标签 难度
0912 排序数组 Python 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 中等

归并排序题目

题号 标题 题解 标签 难度
0912 排序数组 Python 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 中等
0088 合并两个有序数组 Python 数组、双指针、排序 简单
剑指 Offer 51 数组中的逆序对 Python 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 困难

快速排序题目

题号 标题 题解 标签 难度
0912 排序数组 Python 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 中等
0169 多数元素 Python 数组、哈希表、分治、计数、排序 简单

堆排序题目

题号 标题 题解 标签 难度
0912 排序数组 Python 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 中等
0215 数组中的第K个最大元素 Python 数组、分治、快速选择、排序、堆(优先队列) 中等
剑指 Offer 40 最小的k个数 Python 数组、分治、快速选择、排序、堆(优先队列) 简单

计数排序题目

题号 标题 题解 标签 难度
0912 排序数组 Python 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 中等

桶排序题目

题号 标题 题解 标签 难度
0912 排序数组 Python 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 中等

基数排序题目

题号 标题 题解 标签 难度
0164 最大间距 Python 数组、桶排序、基数排序、排序 困难

其他排序题目

题号 标题 题解 标签 难度
0136 只出现一次的数字 Python 位运算、数组 简单
0056 合并区间 Python 数组、排序 中等
0179 最大数 Python 贪心、数组、字符串、排序 中等
0384 打乱数组 Python 数组、数学、随机化 中等
剑指 Offer 45 把数组排成最小的数 Python 贪心、字符串、排序 中等

二分查找题目

二分下标题目

题号 标题 题解 标签 难度
0704 二分查找 Python 数组、二分查找 简单
0034 在排序数组中查找元素的第一个和最后一个位置 Python 数组、二分查找 中等
0153 寻找旋转排序数组中的最小值 Python 数组、二分查找 中等
0154 寻找旋转排序数组中的最小值 II Python 数组、二分查找 困难
0033 搜索旋转排序数组 Python 数组、二分查找 中等
0162 寻找峰值 Python 数组、二分查找 中等
0004 寻找两个正序数组的中位数 Python 数组、二分查找、分治 困难
0074 搜索二维矩阵 Python 数组、二分查找、矩阵 中等
0240 搜索二维矩阵 II Python 数组、二分查找、分治、矩阵 中等

二分答案题目

题号 标题 题解 标签 难度
0069 x 的平方根 Python 数学、二分查找 简单
0287 寻找重复数 Python 位运算、数组、双指针、二分查找 中等
0050 Pow(x, n) Python 递归、数学 中等
0400 第 N 位数字 Python 数学、二分查找 中等

复杂的二分查找问题

题号 标题 题解 标签 难度
0209 长度最小的子数组 Python 数组、二分查找、前缀和、滑动窗口 中等
0349 两个数组的交集 Python 数组、哈希表、双指针、二分查找、排序 简单

双指针题目

对撞指针题目

题号 标题 题解 标签 难度
0611 有效三角形的个数 Python 贪心、数组、双指针、二分查找、排序 中等
0015 三数之和 Python 数组、双指针、排序 中等
0016 最接近的三数之和 Python 数组、双指针、排序 中等
0125 验证回文串 Python 双指针、字符串 简单
0011 盛最多水的容器 Python 贪心、数组、双指针 中等
0075 颜色分类 Python 数组、双指针、排序 中等
剑指 Offer 21 调整数组顺序使奇数位于偶数前面 Python 数组、双指针、排序 简单
0443 压缩字符串 Python 双指针、字符串 中等

快慢指针题目

题号 标题 题解 标签 难度
0026 删除有序数组中的重复项 Python 数组、双指针 简单
0283 移动零 Python 数组、双指针 简单
0088 合并两个有序数组 Python 数组、双指针、排序 简单

分离双指针题目

题号 标题 题解 标签 难度
0415 字符串相加 Python 数学、字符串、模拟 简单

滑动窗口题目

固定长度窗口题目

题号 标题 题解 标签 难度
0239 滑动窗口最大值 Python 队列、数组、滑动窗口、单调队列、堆(优先队列) 困难

不定长度窗口题目

题号 标题 题解 标签 难度
0003 无重复字符的最长子串 Python 哈希表、字符串、滑动窗口 中等
0076 最小覆盖子串 Python 哈希表、字符串、滑动窗口 困难
0718 最长重复子数组 Python 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 中等
0209 长度最小的子数组 Python 数组、二分查找、前缀和、滑动窗口 中等
0862 和至少为 K 的最短子数组 Python 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) 困难
1004 最大连续1的个数 III Python 数组、二分查找、前缀和、滑动窗口 中等

02. 链表

链表经典题目

题号 标题 题解 标签 难度
0083 删除排序链表中的重复元素 Python 链表 简单
0082 删除排序链表中的重复元素 II Python 链表、双指针 中等
0206 反转链表 Python 递归、链表 简单
0092 反转链表 II Python 链表 中等
0025 K 个一组翻转链表 Python 递归、链表 困难
0328 奇偶链表 Python 链表 中等
0234 回文链表 Python 栈、递归、链表、双指针 简单
0138 复制带随机指针的链表 Python 哈希表、链表 中等
0061 旋转链表 Python 链表、双指针 中等

链表排序题目

题号 标题 题解 标签 难度
0148 排序链表 Python 链表、双指针、分治、排序、归并排序 中等
0021 合并两个有序链表 Python 递归、链表 简单
0023 合并 K 个升序链表 Python 链表、分治、堆(优先队列)、归并排序 困难

链表双指针题目

题号 标题 题解 标签 难度
0141 环形链表 Python 哈希表、链表、双指针 简单
0142 环形链表 II Python 哈希表、链表、双指针 中等
0160 相交链表 Python 哈希表、链表、双指针 简单
0019 删除链表的倒数第 N 个结点 Python 链表、双指针 中等
剑指 Offer 22 链表中倒数第k个节点 Python 链表、双指针 简单
0143 重排链表 Python 栈、递归、链表、双指针 中等
0002 两数相加 Python 递归、链表、数学 中等
0445 两数相加 II Python 栈、链表、数学 中等

03. 堆栈

堆栈基础题目

题号 标题 题解 标签 难度
1047 删除字符串中的所有相邻重复项 Python 栈、字符串 简单
0155 最小栈 Python 栈、设计 中等
0020 有效的括号 Python 栈、字符串 简单
0224 基本计算器 栈、递归、数学、字符串 困难
0227 基本计算器 II Python 栈、数学、字符串 中等
0232 用栈实现队列 Python 栈、设计、队列 简单
剑指 Offer 09 用两个栈实现队列 Python 栈、设计、队列 简单
0394 字符串解码 Python 栈、递归、字符串 中等
0032 最长有效括号 Python 栈、字符串、动态规划 困难
0739 每日温度 Python 栈、数组、单调栈 中等
0071 简化路径 栈、字符串 中等

单调栈

题号 标题 题解 标签 难度
0739 每日温度 Python 栈、数组、单调栈 中等
0503 下一个更大元素 II Python 栈、数组、单调栈 中等
0042 接雨水 Python 栈、数组、双指针、动态规划、单调栈 困难
0085 最大矩形 栈、数组、动态规划、矩阵、单调栈 困难

04. 队列

队列基础题目

题号 标题 题解 标签 难度
0225 用队列实现栈 Python 栈、设计、队列 简单

优先队列题目

题号 标题 题解 标签 难度
0347 前 K 个高频元素 Python 数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) 中等
0239 滑动窗口最大值 Python 队列、数组、滑动窗口、单调队列、堆(优先队列) 困难
0295 数据流的中位数 Python 设计、双指针、数据流、排序、堆(优先队列) 困难
0023 合并 K 个升序链表 Python 链表、分治、堆(优先队列)、归并排序 困难

05. 哈希表

哈希表题目

题号 标题 题解 标签 难度
0001 两数之和 Python 数组、哈希表 简单
0015 三数之和 Python 数组、双指针、排序 中等
0041 缺失的第一个正数 Python 数组、哈希表 困难
0128 最长连续序列 Python 并查集、数组、哈希表 中等
0136 只出现一次的数字 Python 位运算、数组 简单
0242 有效的字母异位词 Python 哈希表、字符串、排序 简单
0442 数组中重复的数据 数组、哈希表 中等
剑指 Offer 61 扑克牌中的顺子 Python 数组、排序 简单
0268 丢失的数字 Python 位运算、数组、哈希表、数学、二分查找、排序 简单
剑指 Offer 03 数组中重复的数字 Python 数组、哈希表、排序 简单

06. 字符串

字符串基础题目

题号 标题 题解 标签 难度
0125 验证回文串 Python 双指针、字符串 简单
0005 最长回文子串 Python 字符串、动态规划 中等
0003 无重复字符的最长子串 Python 哈希表、字符串、滑动窗口 中等
0344 反转字符串 Python 双指针、字符串 简单
0557 反转字符串中的单词 III Python 双指针、字符串 简单
0415 字符串相加 Python 数学、字符串、模拟 简单
0151 反转字符串中的单词 Python 双指针、字符串 中等
0043 字符串相乘 Python 数学、字符串、模拟 中等
0014 最长公共前缀 Python 字典树、字符串 简单

单模式串匹配题目

题号 标题 题解 标签 难度
0459 重复的子字符串 Python 字符串、字符串匹配 简单

字典树题目

题号 标题 题解 标签 难度
0208 实现 Trie (前缀树) Python 设计、字典树、哈希表、字符串 中等
0440 字典序的第K小数字 字典树 困难

07. 树

二叉树的遍历题目

题号 标题 题解 标签 难度
0144 二叉树的前序遍历 Python 栈、树、深度优先搜索、二叉树 简单
0094 二叉树的中序遍历 Python 栈、树、深度优先搜索、二叉树 简单
0145 二叉树的后序遍历 Python 栈、树、深度优先搜索、二叉树 简单
0102 二叉树的层序遍历 Python 树、广度优先搜索、二叉树 中等
0103 二叉树的锯齿形层序遍历 Python 树、广度优先搜索、二叉树 中等
0104 二叉树的最大深度 Python 树、深度优先搜索、广度优先搜索、二叉树 简单
0111 二叉树的最小深度 Python 树、深度优先搜索、广度优先搜索、二叉树 简单
0124 二叉树中的最大路径和 Python 树、深度优先搜索、动态规划、二叉树 困难
0101 对称二叉树 Python 树、深度优先搜索、广度优先搜索、二叉树 简单
0112 路径总和 Python 树、深度优先搜索、广度优先搜索、二叉树 简单
0113 路径总和 II Python 树、深度优先搜索、回溯、二叉树 中等
0236 二叉树的最近公共祖先 Python 树、深度优先搜索、二叉树 中等
0199 二叉树的右视图 Python 树、深度优先搜索、广度优先搜索、二叉树 中等
0226 翻转二叉树 Python 树、深度优先搜索、广度优先搜索、二叉树 简单
0958 二叉树的完全性检验 Python 树、广度优先搜索、二叉树 中等
0572 另一棵树的子树 树、深度优先搜索、二叉树、字符串匹配、哈希函数 简单
0100 相同的树 Python 树、深度优先搜索、广度优先搜索、二叉树 简单
0297 二叉树的序列化与反序列化 Python 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 困难
0114 二叉树展开为链表 栈、树、深度优先搜索、链表、二叉树 中等

二叉树的还原题目

题号 标题 题解 标签 难度
0105 从前序与中序遍历序列构造二叉树 Python 树、数组、哈希表、分治、二叉树 中等
0106 从中序与后序遍历序列构造二叉树 Python 树、数组、哈希表、分治、二叉树 中等

二叉搜索树题目

题号 标题 题解 标签 难度
0098 验证二叉搜索树 Python 树、深度优先搜索、二叉搜索树、二叉树 中等
0450 删除二叉搜索树中的节点 Python 树、二叉搜索树、二叉树 中等
剑指 Offer 54 二叉搜索树的第k大节点 Python 树、深度优先搜索、二叉搜索树、二叉树 简单
0230 二叉搜索树中第K小的元素 树、深度优先搜索、二叉搜索树、二叉树 中等
0426 将二叉搜索树转化为排序的双向链表 Python 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 中等
0110 平衡二叉树 Python 树、深度优先搜索、二叉树 简单

并查集题目

题号 标题 题解 标签 难度
0128 最长连续序列 Python 并查集、数组、哈希表 中等

08. 图论

图的深度优先搜索题目

题号 标题 题解 标签 难度
0200 岛屿数量 Python 深度优先搜索、广度优先搜索、并查集、数组、矩阵 中等
0695 岛屿的最大面积 Python 深度优先搜索、广度优先搜索、并查集、数组、矩阵 中等
0144 二叉树的前序遍历 Python 栈、树、深度优先搜索、二叉树 简单
0094 二叉树的中序遍历 Python 栈、树、深度优先搜索、二叉树 简单
0145 二叉树的后序遍历 Python 栈、树、深度优先搜索、二叉树 简单
0129 求根节点到叶节点数字之和 Python 树、深度优先搜索、二叉树 中等
0124 二叉树中的最大路径和 Python 树、深度优先搜索、动态规划、二叉树 困难
0199 二叉树的右视图 Python 树、深度优先搜索、广度优先搜索、二叉树 中等
0543 二叉树的直径 Python 树、深度优先搜索、二叉树 简单
0662 二叉树最大宽度 Python 树、深度优先搜索、广度优先搜索、二叉树 中等
0958 二叉树的完全性检验 Python 树、广度优先搜索、二叉树 中等
0572 另一棵树的子树 树、深度优先搜索、二叉树、字符串匹配、哈希函数 简单
0100 相同的树 Python 树、深度优先搜索、广度优先搜索、二叉树 简单
0111 二叉树的最小深度 Python 树、深度优先搜索、广度优先搜索、二叉树 简单

图的广度优先搜索题目

题号 标题 题解 标签 难度
0200 岛屿数量 Python 深度优先搜索、广度优先搜索、并查集、数组、矩阵 中等
0322 零钱兑换 Python 广度优先搜索、数组、动态规划 中等
0207 课程表 Python 深度优先搜索、广度优先搜索、图、拓扑排序 中等
0199 二叉树的右视图 Python 树、深度优先搜索、广度优先搜索、二叉树 中等
0662 二叉树最大宽度 Python 树、深度优先搜索、广度优先搜索、二叉树 中等
0958 二叉树的完全性检验 Python 树、广度优先搜索、二叉树 中等
0572 另一棵树的子树 树、深度优先搜索、二叉树、字符串匹配、哈希函数 简单
0100 相同的树 Python 树、深度优先搜索、广度优先搜索、二叉树 简单
0111 二叉树的最小深度 Python 树、深度优先搜索、广度优先搜索、二叉树 简单
剑指 Offer 32 - III 从上到下打印二叉树 III Python 树、广度优先搜索、二叉树 中等

图的拓扑排序题目

题号 标题 题解 标签 难度
0210 课程表 II Python 深度优先搜索、广度优先搜索、图、拓扑排序 中等

09. 基础算法

枚举算法题目

题号 标题 题解 标签 难度
0001 两数之和 Python 数组、哈希表 简单
0078 子集 Python 位运算、数组、回溯 中等
0221 最大正方形 Python 数组、动态规划、矩阵 中等
0560 和为 K 的子数组 Python 数组、哈希表、前缀和 中等

递归算法题目

题号 标题 题解 标签 难度
0024 两两交换链表中的节点 Python 递归、链表 中等
0206 反转链表 Python 递归、链表 简单
0092 反转链表 II Python 链表 中等
0021 合并两个有序链表 Python 递归、链表 简单
0509 斐波那契数 Python 递归、记忆化搜索、数学、动态规划 简单
0070 爬楼梯 Python 记忆化搜索、数学、动态规划 简单
0104 二叉树的最大深度 Python 树、深度优先搜索、广度优先搜索、二叉树 简单
0124 二叉树中的最大路径和 Python 树、深度优先搜索、动态规划、二叉树 困难
0226 翻转二叉树 Python 树、深度优先搜索、广度优先搜索、二叉树 简单
剑指 Offer 62 圆圈中最后剩下的数字 Python 递归、数学 简单

分治算法题目

题号 标题 题解 标签 难度
0004 寻找两个正序数组的中位数 Python 数组、二分查找、分治 困难
0023 合并 K 个升序链表 Python 链表、分治、堆(优先队列)、归并排序 困难
0053 最大子数组和 Python 数组、分治、动态规划 中等
0169 多数元素 Python 数组、哈希表、分治、计数、排序 简单
0014 最长公共前缀 Python 字典树、字符串 简单
剑指 Offer 33 二叉搜索树的后序遍历序列 Python 栈、树、二叉搜索树、递归、二叉树、单调栈 中等

回溯算法题目

题号 标题 题解 标签 难度
0046 全排列 Python 数组、回溯 中等
0047 全排列 II Python 数组、回溯 中等
0037 解数独 Python 数组、哈希表、回溯、矩阵 困难
0022 括号生成 Python 字符串、动态规划、回溯 中等
0078 子集 Python 位运算、数组、回溯 中等
0039 组合总和 Python 数组、回溯 中等
0040 组合总和 II Python 数组、回溯 中等
0093 复原 IP 地址 Python 字符串、回溯 中等
0079 单词搜索 Python 数组、回溯、矩阵 中等
0679 24 点游戏 数组、数学、回溯 困难

贪心算法题目

题号 标题 题解 标签 难度
0053 最大子数组和 Python 数组、分治、动态规划 中等
0056 合并区间 Python 数组、排序 中等
0122 买卖股票的最佳时机 II Python 贪心、数组 中等
0055 跳跃游戏 Python 贪心、数组、动态规划 中等
0402 移掉 K 位数字 栈、贪心、字符串、单调栈 中等
0135 分发糖果 Python 贪心、数组 困难
0134 加油站 Python 贪心、数组 中等
0670 最大交换 贪心、数学 中等

位运算题目

题号 标题 题解 标签 难度
0136 只出现一次的数字 Python 位运算、数组 简单
0191 位1的个数 Python 位运算、分治 简单
0268 丢失的数字 Python 位运算、数组、哈希表、数学、二分查找、排序 简单

10. 动态规划

动态规划题目

题号 标题 题解 标签 难度
0070 爬楼梯 Python 记忆化搜索、数学、动态规划 简单
0509 斐波那契数 Python 递归、记忆化搜索、数学、动态规划 简单
0121 买卖股票的最佳时机 Python 数组、动态规划 简单
0322 零钱兑换 Python 广度优先搜索、数组、动态规划 中等
0518 零钱兑换 II Python 数组、动态规划 中等
0300 最长递增子序列 Python 数组、二分查找、动态规划 中等
1143 最长公共子序列 Python 字符串、动态规划 中等
0718 最长重复子数组 Python 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 中等
0064 最小路径和 Python 数组、动态规划、矩阵 中等
0072 编辑距离 Python 字符串、动态规划 困难
0032 最长有效括号 Python 栈、字符串、动态规划 困难
0221 最大正方形 Python 数组、动态规划、矩阵 中等
0062 不同路径 Python 数学、动态规划、组合数学 中等
0063 不同路径 II Python 数组、动态规划、矩阵 中等
0152 乘积最大子数组 Python 数组、动态规划 中等
0198 打家劫舍 Python 数组、动态规划 中等
0213 打家劫舍 II Python 数组、动态规划 中等
0091 解码方法 Python 字符串、动态规划 中等
0010 正则表达式匹配 Python 递归、字符串、动态规划 困难
0678 有效的括号字符串 Python 栈、贪心、字符串、动态规划 中等
0045 跳跃游戏 II Python 贪心、数组、动态规划 中等
0673 最长递增子序列的个数 Python 树状数组、线段树、数组、动态规划 中等
0139 单词拆分 Python 字典树、记忆化搜索、数组、哈希表、字符串、动态规划 中等
0044 通配符匹配 Python 贪心、递归、字符串、动态规划 困难
0120 三角形最小路径和 Python 数组、动态规划 中等
0096 不同的二叉搜索树 Python 树、二叉搜索树、数学、动态规划、二叉树 中等
0887 鸡蛋掉落 Python 数学、二分查找、动态规划 困难
0097 交错字符串 字符串、动态规划 中等
0516 最长回文子序列 Python 字符串、动态规划 中等

记忆化搜索题目

题号 标题 题解 标签 难度
0329 矩阵中的最长递增路径 Python 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 困难

11. 补充题目

设计数据结构题目

题号 标题 题解 标签 难度
0146 LRU 缓存 设计、哈希表、链表、双向链表 中等
0460 LFU 缓存 设计、哈希表、链表、双向链表 困难

数学题目

题号 标题 题解 标签 难度
0007 整数反转 Python 数学 中等
0009 回文数 Python 数学 简单
剑指 Offer 62 圆圈中最后剩下的数字 Python 递归、数学 简单
0168 Excel表列名称 Python 数学、字符串 简单
0400 第 N 位数字 Python 数学、二分查找 中等

模拟题目

题号 标题 题解 标签 难度
0008 字符串转换整数 (atoi) Python 字符串 中等
0165 比较版本号 双指针、字符串 中等
0468 验证IP地址 Python 字符串 中等
0086 分隔链表 链表、双指针 中等

前缀和

题号 标题 题解 标签 难度
0560 和为 K 的子数组 Python 数组、哈希表、前缀和 中等

思维锻炼题目

题号 标题 题解 标签 难度
0031 下一个排列 数组、双指针 中等
0556 下一个更大元素 III 数学、双指针、字符串 中等
0470 用 Rand7() 实现 Rand10() 数学、拒绝采样、概率与统计、随机化 中等

参考资料