题目来源:leetcode-cn
CPP学习参考:cplusplus.com
# | 题目 | 难度 | 解答 | TIPS | TODO |
---|---|---|---|---|---|
数组 | — | — | — | — | — |
1313 | 解压缩编码列表 | Easy | C++ | - | |
1431 | 拥有最多糖果的孩子 | Easy | C++ | max_element() 、min_element() |
- |
1470 | 重新排列数组 | Easy | C++ | push_back() 、emplace_back() |
- |
1480 | 一维数组的动态和 | Easy | C++ | - | |
1486 | 数组异或操作 | Easy | C++ | - | |
1512 | 好数对的数目 | Easy | C++ | - | |
1365 | 有多少小于当前数字的数字 | Easy | C++ | - | |
1389 | 按既定顺序创建目标数组 | Easy | C++ | - | |
1640 | 能否连接形成数组 | Easy | C++ | - | |
1266 | 访问所有点的最小时间 | Easy | C++ | - | |
1295 | 统计位数为偶数的数字 | Easy | C++ | - | |
1588 | 所有奇数长度子数组的和 | Easy | C++ | 前缀和(Prefix Sum)、accumulate() |
- |
1572 | 矩阵对角线元素的和 | Easy | C++ | 二维数组行、列 | - |
1450 | 在既定时间做作业的学生人数 | Easy | C++ | - | |
1217 | 玩筹码 | Easy | C++ | - | |
1534 | 统计好三元组 | Easy | C++ | - | |
1299 | 将每个元素替换为右侧最大元素 | Easy | C++ | - | |
1672 | 最富有客户的资产总量 | Easy | C++ | - | |
1464 | 数组中两元素的最大乘积 | Easy | C++ | sort() |
- |
1002 | 查找常用字符 | Easy | C++ | fill() 和memset() 、char 转string |
- |
1086 | 前五科的均分 | Easy | C++ | sort() 的谓词参数 |
- |
1160 | 拼写单词 | Easy | C++ | - | |
剑指Offer03 | 数组中重复的数字 | Easy | C++ | - | |
1085 | 最小元素各数位之和 | Easy | C++ | - | |
1700 | 无法吃午餐的学生数量 | Easy | C++ | 栈(stack )和队列(queue ) |
- |
1732 | 找到最高海拔 | Easy | C++ | - | |
1351 | 统计有序矩阵中的负数 | Easy | C++ | - | |
167 | 两数之和 II - 输入有序数组 | Easy | C++ | - | |
剑指Offer29 | 顺时针打印矩阵 | Easy | C++ | - | |
剑指Offer53-I | 在排序数组中查找数字 I | Easy | C++ | - | |
剑指Offer04 | 二维数组中的查找 | Medium | C++ | - | |
4 | 寻找两个正序数组的中位数 | Hard | C++ | - | |
42 | 接雨水 | Hard | C++ | - | |
56 | 合并区间 | Medium | C++ | - | |
31 | 下一个排列 | Medium | C++ | - | |
48 | 旋转图像 | Medium | C++ | - | |
88 | 合并两个有序数组 | Easy | C++ | - | |
字符串 | — | — | — | — | — |
1119 | 删去字符串中的元音 | Easy | C++ | erase() |
- |
剑指Offer58-II | 左旋转字符串 | Easy | C++ | reverse() 、substr() |
- |
1165 | 单行键盘 | Easy | C++ | C++ break |
- |
1108 | IP地址无效化 | Easy | C++ | replace() |
- |
1614 | 括号的最大嵌套深度 | Easy | C++ | - | |
1221 | 分割平衡字符串 | Easy | C++ | - | |
1436 | 旅行终点站 | Easy | C++ | unordered_set 、unordered_map |
- |
657 | 机器人能否返回原点 | Easy | C++ | - | |
1180 | 统计只含单一字母的子串 | Easy | C++ | - | |
709 | 转换成小写字母 | Easy | C++ | - | |
804 | 唯一摩尔斯密码词 | Easy | C++ | unordered_set 详解 |
- |
1309 | 解码字母到整数映射 | Easy | C++ | remove() +erase() |
- |
1370 | 上升下降字符串 | Easy | C++ | 桶记数法、Lambda表达式 | - |
1662 | 检查两个字符串数组是否相等 | Easy | C++ | - | |
344 | 反转字符串 | Easy | C++ | swap() 、双指针 |
- |
557 | 反转字符串中的单词III | Easy | C++ | istringstream 、ostringstream 、reverse() |
- |
800 | 相似RGB颜色 | Easy | C++ | substr() 、stoi() 、find() 、break 、十六进制转十进制 |
- |
1374 | 生成每种字符都是奇数个的字符串 | Easy | C++ | - | |
1678 | 设计Goal解析器 | Easy | C++ | - | |
893 | 特殊等价字符串组 | Easy | C++ | unordered_set 中的insert() |
- |
1684 | 统计一致字符串的数目 | Easy | C++ | - | |
1704 | 判断字符串的两半是否相似 | Easy | C++ | - | |
剑指Offer05 | 替换空格 | Easy | C++ | - | |
剑指Offer58-I | 翻转单词顺序 | Easy | C++ | istringstream |
- |
剑指Offer67 | 把字符串转换成整数 | Medium | C++ | - | |
415 | 字符串相加 | Easy | C++ | - | |
179 | 最大数 | Medium | C++ | - | |
67 | 二进制求和 | Medium | C++ | - | |
8 | 字符串转换整数 (atoi) | Medium | C++ | - | |
468 | 验证IP地址 | Medium | C++ | - | |
14 | 最长公共前缀 | Easy | C++ | - | |
数学 | — | — | — | — | — |
1281 | 整数的各位积和之差 | Easy | C++ | - | |
剑指Offer17 | 打印从1到最大的n位数 | Easy | C++ | 大数问题[✔] | |
1134 | 阿姆斯特朗数 | Easy | C++ | char 与int 之间的加减法 |
- |
728 | 自除数 | Easy | C++ | - | |
1323 | 6和9组成的最大数字 | Easy | C++ | atoi() 、stoi() |
- |
面试题16.07 | 最大数值 | Easy | C++ | 原码补码和ASCII码、>> 运算 |
- |
942 | 增减字符串匹配 | Easy | C++ | - | |
1512 | 好数对的数目 | Easy | C++ | - | |
1180 | 统计只含单一字母的子串 | Easy | C++ | - | |
1025 | 除数博弈 | Easy | C++ | - | |
1237 | 找出给定方程的正整数解 | Easy | C++ | 二分查找 | - |
908 | 最小差值I | Easy | C++ | - | |
1217 | 玩筹码 | Easy | C++ | - | |
800 | 相似RGB颜色 | Easy | C++ | substr() 、stoi() 、find() 、break 、十六进制转十进制 |
- |
剑指Offer49 | 丑数 | Medium | C++ | 三指针、小顶堆 | - |
剑指Offer14-I.剪绳子 | 剪绳子 | Medium | C++ | - | |
剑指Offer44 | 数字序列中某一位的数字 | Medium | C++ | - | |
50 | Pow(x, n) | Medium | C++ | 快速幂 | - |
剑指Offer20 | 表示数值的字符串 | Medium | C++ | - | |
剑指 Offer43 | 1~n 整数中 1 出现的次数 | Hard | C++ | - | |
7 | 整数反转 | Easy | C++ | - | |
9 | 回文数 | Easy | C++ | - | |
树 | — | — | — | — | — |
226 | 翻转二叉树 | Easy | C++ | deque 、continue |
- |
剑指Offer55-I | 二叉树的深度 | Easy | C++ | 二叉树层序遍历 | - |
1469 | 寻找所有独生节点 | Easy | C++ | - | |
面试题04.02 | 最小高度树 | Easy | C++ | - | |
104 | 二叉树的最大深度 | Easy | C++ | - | |
剑指Offer27 | 二叉树的镜像 | Easy | C++ | - | |
617 | 合并二叉树 | Easy | C++ | - | |
938 | 二叉搜索树的范围和 | Easy | C++ | - | |
700 | 二叉搜索树中的搜索 | Easy | C++ | 递归搜索树中何时return 的问题 |
- |
590 | N叉树的后序遍历 | Easy | C++ | 树的前中后序递归和迭代法 | - |
108 | 将有序数组转换为二叉搜索树 | Easy | C++ | - | |
107 | 二叉树的层序遍历 II | Easy | C++ | - | |
94 | 二叉树的中序遍历 | Medium | C++ | - | |
543 | 二叉树的直径 | Easy | C++ | - | |
101 | 对称二叉树 | Easy | C++ | - | |
257 | 二叉树的所有路径 | Easy | C++ | - | |
112 | 路径总和 | Easy | C++ | - | |
100 | 相同的树 | Easy | C++ | - | |
501 | 二叉搜索树中的众数 | Easy | C++ | - | |
剑指Offer54 | 二叉搜索树的第k大节点 | Easy | C++ | - | |
144 | 二叉树的前序遍历 | Medium | C++ | 递归、栈模拟递归 | - |
剑指Offer32-II | 从上到下打印二叉树 II | Easy | C++ | 二叉树的层序遍历 | - |
剑指Offer68-II | 二叉树的最近公共祖先 | Easy | C++ | - | |
剑指 Offer 55-II | 平衡二叉树 | Medium | C++ | - | |
剑指 Offer 68 - I | 二叉搜索树的最近公共祖先 | Easy | C++ | - | |
剑指 Offer 07 | 重建二叉树 | Medium | C++ | - | |
剑指 Offer 32 - I | 从上到下打印二叉树 | Medium | C++ | - | |
剑指Offer32-III | 从上到下打印二叉树 III | Medium | C++ | - | |
剑指Offer34 | 二叉树中和为某一值的路径 | Medium | C++ | 递归+回溯 | - |
剑指Offer26 | 树的子结构 | Medium | C++ | - | |
剑指Offer37 | 序列化二叉树 | Hard | C++ | - | |
103 | 二叉树的锯齿形层序遍历 | Medium | C++ | - | |
129 | 求根节点到叶节点数字之和 | Medium | C++ | - | |
114 | 二叉树展开为链表 | Medium | C++ | - | |
199 | 二叉树的右视图 | Medium | C++ | - | |
深度优先搜索DFS | — | — | — | — | — |
463 | 岛屿的周长 | Easy | C++ | - | |
剑指Offer55-I | 二叉树的深度 | Easy | C++ | 二叉树层序遍历 | - |
1469 | 寻找所有独生节点 | Easy | C++ | - | |
面试题04.02 | 最小高度树 | Easy | C++ | - | |
104 | 二叉树的最大深度 | Easy | C++ | - | |
938 | 二叉搜索树的范围和 | Easy | C++ | - | |
108 | 将有序数组转换为二叉搜索树 | Easy | C++ | - | |
101 | 对称二叉树 | Easy | C++ | - | |
257 | 二叉树的所有路径 | Easy | C++ | - | |
112 | 路径总和 | Easy | C++ | - | |
100 | 相同的树 | Easy | C++ | - | |
剑指 Offer 55-II | 平衡二叉树 | Medium | C++ | - | |
剑指Offer34 | 二叉树中和为某一值的路径 | Medium | C++ | 递归+回溯 | - |
剑指Offer12 | 矩阵中的路径 | Medium | C++ | 矩阵搜索问题 | - |
200 | 岛屿数量 | Medium | C++ | 岛屿题的归纳 | - |
哈希表 | — | — | — | — | — |
1512 | 好数对的数目 | Easy | C++ | 哈希表解法[✔] | |
1365 | 有多少小于当前数字的数字 | Easy | C++ | - | |
771 | 宝石与石头 | Easy | C++ | unordered_set::count() |
- |
760 | 找出变位映射 | Easy | C++ | C++迭代器、vector::pop_back() 、vector::back 与vector::end |
- |
1213 | 三个有序数组的交集 | Easy | C++ | 二分查找法[ ]双指针法[ ] | |
1002 | 查找常用字符 | Easy | C++ | fill() 和memset() 、char 转string |
- |
1207 | 独一无二的出现次数 | Easy | C++ | 判断容器中是否存在重复元素、 C++ 数组 |
- |
349 | 两个数组的交集 | Easy | C++ | - | |
463 | 岛屿的周长 | Easy | C++ | - | |
359 | 日志速率限制器 | Easy | C++ | unordered_map::count() |
- |
1086 | 前五科的均分 | Easy | C++ | sort() 的谓词参数 |
- |
136 | 只出现一次的数字 | Easy | C++ | 异或运算^ |
- |
500 | 键盘行 | Easy | C++ | - | |
389 | 找不同 | Easy | C++ | - | |
811 | 子域名访问计数 | Easy | C++ | to_string() |
- |
1160 | 拼写单词 | Easy | C++ | - | |
575 | 分糖果 | Easy | C++ | - | |
剑指Offer03 | 数组中重复的数字 | Easy | C++ | - | |
961 | 重复N次的元素 | Easy | C++ | - | |
266 | 回文排列 | Easy | C++ | - | |
剑指Offer50 | 第一个只出现一次的字符 | Easy | C++ | - | |
1 | 两数之和 | Easy | C++ | x2 | |
49 | 字母异位词分组 | Medium | C++ | - | |
448 | 找到所有数组中消失的数字 | Easy | C++ | - | |
13 | 罗马数字转整数 | Easy | C++ | - | |
动态规划 | — | — | — | — | — |
1025 | 除数博弈 | Easy | C++ | - | |
62 | 不同路径 | Medium | C++ | 二维vector初始化 | - |
剑指 Offer 47 | 礼物的最大价值 | Medium | C++ | - | |
338 | 比特位计数 | Easy | C++ | - | |
72 | 编辑距离 | Hard | C++ | - | |
96 | 不同的二叉搜索树 | Medium | C++ | - | |
494 | 目标和 | Medium | C++ | 转化为背包问题 | - |
279 | 完全平方数 | Medium | C++ | 转化为背包问题 | - |
213 | 打家劫舍 II | Medium | C++ | - | |
337 | 打家劫舍 III | Medium | C++ | 树形DP | - |
121 | 买卖股票的最佳时机 | Easy | C++ | - | |
122 | 买卖股票的最佳时机 II | Easy | C++ | - | |
309 | 最佳买卖股票时机含冷冻期 | Medium | C++ | - | |
剑指Offer42 | 连续子数组的最大和 | Easy | C++ | 分治□暴力[✔] | |
剑指Offer63 | 股票的最大利润 | Medium | C++ | - | |
剑指Offer14-I | 剪绳子 | Medium | C++ | - | |
5 | 最长回文子串 | Medium | C++ | - | |
647 | 回文子串 | Medium | C++ | - | |
42 | 接雨水 | Hard | C++ | - | |
198 | 打家劫舍 | Medium | C++ | - | |
416 | 分割等和子集 | Medium | C++ | 01背包 | - |
300 | 最长递增子序列 | Medium | C++ | - | |
322 | 零钱兑换 | Medium | C++ | 完全背包(各类背包模板) | - |
152 | 乘积最大子数组 | Medium | C++ | - | |
64 | 最小路径和 | Medium | C++ | - | |
221 | 最大正方形 | Medium | C++ | - | |
139 | 单词拆分 | Medium | C++ | - | |
1143 | 最长公共子序列 | Medium | C++ | - | |
贪心算法 | — | — | — | — | — |
1221 | 分割平衡字符串 | Easy | C++ | - | |
1217 | 玩筹码 | Easy | C++ | - | |
二分查找 | — | — | — | — | — |
1237 | 找出给定方程的正整数解 | Easy | C++ | 二分查找 | - |
349 | 两个数组的交集 | Easy | C++ | - | |
1351 | 统计有序矩阵中的负数 | Easy | C++ | - | |
167 | 两数之和 II - 输入有序数组 | Easy | C++ | - | |
69 | x 的平方根 | Easy | C++ | - | |
剑指Offer11 | 旋转数组的最小数字 | Easy | C++ | - | |
剑指Offer53-II | 0~n-1中缺失的数字 | Easy | C++ | - | |
剑指Offer53-I | 在排序数组中查找数字 I | Easy | C++ | - | |
33 | 搜索旋转排序数组 | Medium | C++ | 二分查找 | - |
153 | 寻找旋转排序数组中的最小值 | Medium | C++ | - | |
34 | 在排序数组中查找元素的第一个和最后一个位置 | Medium | C++ | y总:二分查找95%模板 | - |
287 | 寻找重复数 | Medium | C++ | - | |
广度优先搜索 | — | — | — | — | — |
107 | 二叉树的层序遍历 II | Easy | C++ | - | |
101 | 对称二叉树 | Easy | C++ | - | |
剑指Offer32-II | 从上到下打印二叉树 II | Easy | C++ | 二叉树的层序遍历 | - |
剑指 Offer 32 - I | 从上到下打印二叉树 | Medium | C++ | - | |
剑指Offer32-III | 从上到下打印二叉树 III | Medium | C++ | - | |
排序 | — | — | — | — | — |
剑指Offer45 | 把数组排成最小的数 | Medium | C++ | - | |
56 | 合并区间 | Medium | C++ | sort自定义排序(数组版) | - |
148 | 排序链表 | Medium | C++ | 归并排序 | - |
回溯 | — | — | — | — | — |
剑指Offer38 | 字符串的排列 | Medium | C++ | 回溯法介绍 | - |
78 | 子集 | Medium | C++ | - | |
77 | 组合 | Medium | C++ | - | |
39 | 组合总和 | Medium | C++ | - | |
40 | 组合总和 II | Medium | C++ | - | |
216 | 组合总和 III | Medium | C++ | - | |
131 | 分割回文串 | Medium | C++ | - | |
79 | 单词搜索 | Medium | C++ | - | |
17 | 电话号码的字母组合 | Medium | C++ | - | |
双指针 | — | — | — | — | — |
344 | 反转字符串 | Easy | C++ | swap() 、双指针 |
- |
1213 | 三个有序数组的交集 | Easy | C++ | 二分查找法[ ]双指针法[ ] | |
349 | 两个数组的交集 | Easy | C++ | - | |
剑指Offer22 | 链表中倒数第k个节点 | Easy | C++ | x2 | |
面试题02.02 | 返回倒数第k个节点 | Easy | C++ | - | |
141 | 环形链表 | Easy | C++ | x2 | |
142 | 环形链表 II | Medium | C++ | x2 | |
167 | 两数之和 II - 输入有序数组 | Easy | C++ | - | |
剑指Offer48 | 最长不含重复字符的子字符串 | Medium | C++ | string 的find() 函数 |
- |
15 | 三数之和 | Medium | C++ | - | |
42 | 接雨水 | Hard | C++ | - | |
11 | 盛最多水的容器 | Medium | C++ | - | |
19 | 删除链表的倒数第 N 个结点 | Medium | C++ | - | |
283 | 移动零 | Easy | C++ | - | |
345 | 反转字符串中的元音字母 | Easy | C++ | - | |
26 | 删除有序数组中的重复项 | Easy | C++ | - | |
18 | 四数之和 | Medium | C++ | - | |
设计 | — | — | — | — | — |
359 | 日志速率限制器 | Easy | C++ | unordered_map::count() |
- |
剑指Offer09 | 用两个栈实现队列 | Easy | C++ | - | |
146 | LRU 缓存机制 | Medium | C++ | STL(unordered_map 、双链表list 的splice 方法)、pair 、迭代器 |
- |
208 | 实现 Trie (前缀树) | Medium | C++ | 字典树(前缀树)的实现 | - |
155 | 最小栈 | Easy | C++ | - | |
栈 | — | — | — | — | — |
94 | 二叉树的中序遍历 | Medium | C++ | - | |
剑指Offer09 | 用两个栈实现队列 | Easy | C++ | - | |
剑指Offer30 | 包含min函数的栈 | Medium | C++ | - | |
20 | 有效的括号 | Easy | C++ | x2 | |
42 | 接雨水 | Hard | C++ | - | |
739 | 每日温度 | Medium | C++ | 单调栈 | - |
232 | 用栈实现队列 | Medium | C++ | - | |
位运算 | — | — | — | — | — |
1486 | 数组异或操作 | Easy | C++ | - | |
面试题16.07 | 最大数值 | Easy | C++ | 原码补码和ASCII码、>> 运算 |
位运算解法[✔] |
136 | 只出现一次的数字 | Easy | C++ | 异或运算^ |
- |
389 | 找不同 | Easy | C++ | - | |
1290 | 二进制链表转整数 | Easy | C++ | - | |
461 | 汉明距离 | Easy | C++ | - | |
剑指Offer15 | 二进制中1的个数 | Easy | C++ | - | |
剑指Offer56-II | 数组中数字出现的次数 II | Easy | C++ | - | |
137 | 只出现一次的数字 II | Medium | C++ | - | |
260 | 只出现一次的数字 III | Medium | C++ | - | |
338 | 比特位计数 | Easy | C++ | - | |
链表 | — | — | — | — | — |
面试题02.03 | 删除中间节点 | Easy | C++ | - | |
237 | 删除链表中的节点 | Easy | C++ | - | |
1290 | 二进制链表转整数 | Easy | C++ | - | |
剑指Offer22 | 链表中倒数第k个节点 | Easy | C++ | x2 | |
面试题02.02 | 返回倒数第k个节点 | Easy | C++ | - | |
剑指Offer06 | 从尾到头打印链表 | Easy | C++ | - | |
1474 | 删除链表M个节点之后的N个节点 | Easy | C++ | dummy head |
- |
剑指Offer24 | 反转链表 | Easy | C++ | - | |
206 | 反转链表 | Easy | C++ | - | |
876 | 链表的中间节点 | Easy | C++ | - | |
面试题02.01 | 移除重复节点 | Easy | C++ | - | |
面试题02.07 | 链表相交 | Easy | C++ | - | |
21 | 合并两个有序链表 | Easy | C++ | 迭代、递归 | - |
剑指Offer52 | 两个链表的第一个公共节点 | Easy | C++ | - | |
剑指Offer18 | 删除链表的节点 | Easy | C++ | - | |
160 | 相交链表 | Easy | C++ | - | |
83 | 删除排序链表中的重复元素 | Easy | C++ | x2 | |
141 | 环形链表 | Easy | C++ | - | |
面试题02.06 | 回文链表 | Easy | C++ | - | |
203 | 移除链表元素 | Easy | C++ | 递归 | - |
234 | 回文链表 | Easy | C++ | - | |
剑指Offer35 | 复杂链表的复制 | Medium | C++ | - | |
2 | 两数相加 | Medium | C++ | x2 | |
19 | 删除链表的倒数第 N 个结点 | Medium | C++ | - | |
143 | 重排链表 | Medium | C++ | 经典题 | - |
92 | 反转链表 II | Medium | C++ | - | |
25 | K 个一组翻转链表 | Hard | C++ | - | |
堆 | — | — | — | — | — |
剑指Offer40 | 最小的k个数 | Easy | C++ | 快排、堆、priority_queue | - |
剑指Offer41 | 数据流中的中位数 | Hard | C++ | - | |
215 | 数组中的第K个最大元素 | Medium | C++ | Top-K问题 | - |
347 | 前 K 个高频元素 | Medium | C++ | Top-K问题 | - |
递归 | — | — | — | — | — |
21 | 合并两个有序链表 | Easy | C++ | 迭代、递归 | - |
104 | 二叉树的最大深度 | Easy | C++ | - | |
938 | 二叉搜索树的范围和 | Easy | C++ | - | |
剑指 Offer 10-I | 斐波那契数列 | Easy | C++ | 递归、动态规划(DP) | - |
剑指 Offer 10-II | 青蛙跳台阶问题 | Easy | C++ | - | |
剑指 Offer 16 | 数值的整数次方 | Medium | C++ | 快速幂 | - |
剑指 Offer 07 | 重建二叉树 | Medium | C++ | - | |
排序 | — | — | — | — | — |
1640 | 能否连接形成数组 | Easy | C++ | - | |
1370 | 上升下降字符串 | Easy | C++ | 桶记数法、Lambda表达式 | - |
349 | 两个数组的交集 | Easy | C++ | - | |
1086 | 前五科的均分 | Easy | C++ | sort() 的谓词参数 |
- |
前缀和 | — | — | — | — | — |
560 | 和为K的子数组 | Medium | C++ | 前缀和 | - |
贪心 | — | — | — | — | — |
55 | 跳跃游戏 | Medium | C++ | 贪心 | - |
分治算法 | — | — | — | — | — |
剑指Offer25 | 合并两个排序的链表 | Easy | C++ | - | |
剑指Offer40 | 最小的k个数 | Easy | C++ | 快排、堆、priority_queue | - |
滑动窗口 | — | — | — | — | — |
剑指Offer59-I | 滑动窗口的最大值 | Easy | C++ | - | |
剑指Offer48 | 最长不含重复字符的子字符串 | Medium | C++ | string 的find() 函数 |
- |
队列 | — | — | — | — | — |
剑指Offer59-I | 滑动窗口的最大值 | Easy | C++ | 单调队列 | - |
字典树 | — | — | — | — | — |
208 | 实现 Trie (前缀树) | Medium | C++ | 字典树(前缀树)的实现 | - |
几何 | — | — | — | — | — |
1266 | 访问所有点的最小时间 | Easy | C++ | - | |
剑指Offer | — | — | — | — | — |
剑指Offer65 | 不用加减乘除做加法 | Easy | C++ | 位运算 | x2 |
剑指Offer54 | 二叉搜索树的第k大节点 | Easy | C++ | 二叉搜索树中序遍历可以得到有序(升序或降序)的结果 | x2? |
剑指Offer58-I | 翻转单词顺序 | Easy | C++ | istringstream |
x2? |
剑指Offer58-II | 左旋转字符串 | Easy | C++ | reverse()左闭右开! 、substr() |
x2 |
剑指Offer52 | 两个链表的第一个公共节点 | Easy | C++ | x2? | |
剑指Offer56-I | 数组中数字出现的次数 | Medium | C++ | 分组位运算 | - |
剑指Offer56-II | 数组中数字出现的次数 II | Easy | C++ | 位运算 | x2 |
剑指Offer55-I | 二叉树的深度 | Easy | C++ | 二叉树层序遍历,递归解法 | x2 |
剑指Offer55-II | 平衡二叉树 | Medium | C++ | x2? | |
剑指Offer32-I | 从上到下打印二叉树 | Medium | C++ | 二叉树的层序遍历 | x2 |
剑指Offer32-II | 从上到下打印二叉树 II | Easy | C++ | 二叉树的层序遍历 | x2 |
剑指Offer32-III | 从上到下打印二叉树 III | Medium | C++ | x2 | |
剑指Offer17 | 打印从1到最大的n位数 | Easy | C++ | 大数问题[✔] | |
剑指Offer15 | 二进制中1的个数 | Easy | C++ | - | |
剑指Offer27 | 二叉树的镜像 | Easy | C++ | - | |
剑指Offer05 | 替换空格 | Easy | C++ | - | |
剑指Offer64 | 求1+2+…+n | Medium | C++ | 逻辑运算的短路性质 | - |
剑指Offer18 | 删除链表的节点 | Easy | C++ | x2 | |
剑指Offer06 | 从尾到头打印链表 | Easy | C++ | x2 | |
剑指Offer25 | 合并两个排序的链表 | Easy | C++ | x2 | |
剑指Offer09 | 用两个栈实现队列 | Easy | C++ | x2 | |
剑指Offer42 | 连续子数组的最大和 | Easy | C++ | 分治□暴力[✔]x3 | |
剑指Offer29 | 顺时针打印矩阵 | Easy | C++ | - | |
剑指Offer40 | 最小的k个数 | Easy | C++ | 快排、堆、priority_queue | - |
剑指 Offer10-I | 斐波那契数列 | Easy | C++ | 递归、动态规划(DP) | x3 |
剑指 Offer10-II | 青蛙跳台阶问题 | Easy | C++ | x2 | |
剑指Offer11 | 旋转数组的最小数字 | Easy | C++ | x2 | |
剑指Offer57 | 和为s的两个数字 | Easy | C++ | - | |
剑指Offer57-II | 和为s的连续正数序列 | Easy | C++ | 滑动窗口法 | - |
剑指Offer53-I | 在排序数组中查找数字 I | Easy | C++ | y总的二分模板 | x2 |
剑指Offer53-II | 0~n-1中缺失的数字 | Easy | C++ | y总的二分模板? | x2 |
剑指Offer50 | 第一个只出现一次的字符 | Easy | C++ | x2 | |
剑指Offer62 | 圆圈中最后剩下的数字 | Easy | C++ | 链表List |
- |
剑指Offer59-I | 滑动窗口的最大值 | Hard | C++ | 模拟单调队列 | x2? |
剑指Offer59-II | 队列的最大值 | Medium | C++ | x2 | |
剑指Offer21 | 调整数组顺序使奇数位于偶数前面 | Easy | C++ | - | |
剑指Offer39 | 数组中出现次数超过一半的数字 | Easy | C++ | 摩尔投票法 | - |
剑指Offer61 | 扑克牌中的顺子 | Easy | C++ | begin(),end() 和rbegin(), rend() |
- |
剑指 Offer68-I | 二叉搜索树的最近公共祖先 | Easy | C++ | x2? | |
剑指Offer68-II | 二叉树的最近公共祖先 | Easy | C++ | x2? | |
剑指Offer28 | 对称的二叉树 | Easy | C++ | - | |
剑指Offer35 | 复杂链表的复制 | Medium | C++ | x2? | |
剑指Offer16 | 数值的整数次方 | Medium | C++ | 快速幂 | - |
剑指Offer49 | 丑数 | Medium | C++ | 三指针、小顶堆 | x2? |
剑指Offer07 | 重建二叉树 | Medium | C++ | x4? | |
剑指Offer47 | 礼物的最大价值 | Medium | C++ | x2? | |
剑指Offer36 | 二叉搜索树与双向链表 | Medium | C++ | x2? | |
剑指Offer04 | 二维数组中的查找 | Medium | C++ | x2? | |
剑指Offer63 | 股票的最大利润 | Medium | C++ | x2? | |
剑指Offer31 | 栈的压入、弹出序列 | Medium | C++ | x2? | |
剑指Offer66 | 构建乘积数组 | Medium | C++ | - | |
剑指Offer34 | 二叉树中和为某一值的路径 | Medium | C++ | 递归+回溯 | - |
剑指Offer14-I | 剪绳子 | Medium | C++ | - | |
剑指Offer14-II | 剪绳子 II | Medium | C++ | 大数问题 | - |
剑指Offer45 | 把数组排成最小的数 | Medium | C++ | - | |
剑指Offer60 | n个骰子的点数 | Medium | C++ | - | |
剑指Offer33 | 二叉搜索树的后序遍历序列 | Medium | C++ | - | |
剑指Offer46 | 把数字翻译成字符串 | Medium | C++ | DP优化之滚动数组 | x2? |
剑指Offer30 | 包含min函数的栈 | Medium | C++ | - | |
剑指Offer13 | 机器人的运动范围 | Medium | C++ | 矩阵搜索问题,典型的DFS和BFS | x2? |
剑指Offer48 | 最长不含重复字符的子字符串 | Medium | C++ | string 的find() 函数 |
x4? |
剑指Offer26 | 树的子结构 | Medium | C++ | - | |
剑指Offer12 | 矩阵中的路径 | Medium | C++ | 矩阵搜索问题 | - |
剑指Offer44 | 数字序列中某一位的数字 | Medium | C++ | - | |
剑指Offer67 | 把字符串转换成整数 | Medium | C++ | - | |
剑指Offer51 | 数组中的逆序对 | Hard | C++ | 归并排序 | x2 |
剑指Offer20 | 表示数值的字符串 | Medium | C++ | x2 | |
剑指Offer41 | 数据流中的中位数 | Hard | C++ | - | |
剑指Offer37 | 序列化二叉树 | Hard | C++ | - | |
剑指Offer43 | 1~n 整数中 1 出现的次数 | Hard | C++ | - | |
剑指Offer24 | 反转链表 | Easy | C++ | x2 | |
剑指Offer03 | 数组中重复的数字 | Easy | C++ | x2 | |
剑指Offer22 | 链表中倒数第k个节点 | Easy | C++ | x3 | |
剑指Offer38 | 字符串的排列 | Medium | C++ | 回溯法介绍 | x3 |
HOT 100 | — | — | — | — | — |
1 | 两数之和 | Easy | C++ | - | |
5 | 最长回文子串 | Medium | C++ | - | |
2 | 两数相加 | Medium | C++ | - | |
3 | 无重复字符的最长子串 | Medium | C++ | 同剑指Offer48 | - |
70 | 爬楼梯 | Easy | C++ | 同剑指Offer10-II 青蛙跳台阶 | - |
46 | 全排列 | Medium | C++ | 同剑指Offer38 字符串排列 | - |
20 | 有效的括号 | Easy | C++ | - | |
15 | 三数之和 | Medium | C++ | - | |
21 | 合并两个有序链表 | Easy | C++ | 迭代、递归 | - |
338 | 比特位计数 | Easy | C++ | - | |
4 | 寻找两个正序数组的中位数 | Hard | C++ | - | |
42 | 接雨水 | Hard | C++ | - | |
146 | LRU 缓存机制 | Medium | C++ | STL(unordered_map 、双链表list 的splice 方法)、pair 、迭代器 |
- |
200 | 岛屿数量 | Medium | C++ | 岛屿题的归纳 | - |
739 | 每日温度 | Medium | C++ | 单调栈 | - |
56 | 合并区间 | Medium | C++ | - | |
105 | 从前序与中序遍历序列构造二叉树 | Medium | C++ | 同剑指Offer07重建二叉树 | - |
215 | 数组中的第K个最大元素 | Medium | C++ | - | |
22 | 括号生成 | Medium | C++ | 区别于一般的回溯,少了撤回的步骤? | - |
11 | 盛最多水的容器 | Medium | C++ | - | |
72 | 编辑距离 | Hard | C++ | - | |
102 | 二叉树的层序遍历 | Medium | C++ | 同剑指Offer32-II | - |
53 | 最大子序和 | Easy | C++ | 同剑指Offer42 | - |
198 | 打家劫舍 | Medium | C++ | - | |
394 | 字符串解码 | Medium | C++ | 括号匹配 | - |
148 | 排序链表 | Medium | C++ | 归并排序 | - |
300 | 最长递增子序列 | Medium | C++ | - | |
322 | 零钱兑换 | Medium | C++ | 完全背包(各类背包模板) | - |
33 | 搜索旋转排序数组 | Medium | C++ | 二分查找 | - |
19 | 删除链表的倒数第 N 个结点 | Medium | C++ | - | |
31 | 下一个排列 | Medium | C++ | - | |
152 | 乘积最大子数组 | Medium | C++ | - | |
347 | 前 K 个高频元素 | Medium | C++ | Top-K问题 | - |
560 | 和为K的子数组 | Medium | C++ | 前缀和 | - |
55 | 跳跃游戏 | Medium | C++ | 贪心 | - |
208 | 实现 Trie (前缀树) | Medium | C++ | 字典树(前缀树)的实现 | - |
98 | 验证二叉搜索树 | Medium | C++ | 栈模拟中序遍历 | - |
236 | 二叉树的最近公共祖先 | Medium | C++ | - | |
128 | 最长连续序列 | Medium | C++ | - | |
79 | 单词搜索 | Medium | C++ | - | |
96 | 不同的二叉搜索树 | Medium | C++ | - | |
494 | 目标和 | Medium | C++ | 转化为背包问题 | - |
279 | 完全平方数 | Medium | C++ | 转化为背包问题 | - |
142 | 环形链表 II | Medium | C++ | - | |
34 | 在排序数组中查找元素的第一个和最后一个位置 | Medium | C++ | y总:二分查找95%模板 | - |
17 | 电话号码的字母组合 | Medium | C++ | - | |
48 | 旋转图像 | Medium | C++ | - | |
309 | 最佳买卖股票时机含冷冻期 | Medium | C++ | - | |
64 | 最小路径和 | Medium | C++ | - | |
221 | 最大正方形 | Medium | C++ | - | |
49 | 字母异位词分组 | Medium | C++ | - | |
287 | 寻找重复数 | Medium | C++ | - | |
337 | 打家劫舍 III | Medium | C++ | 树形DP | - |
647 | 回文子串 | Medium | C++ | - | |
139 | 单词拆分 | Medium | C++ | - | |
283 | 移动零 | Easy | C++ | - | |
238 | 除自身以外数组的乘积 | Medium | C++ | 同剑指Offer66 | - |
155 | 最小栈 | Easy | C++ | - | |
169 | 多数元素 | Easy | C++ | 同剑指Offer9 | - |
448 | 找到所有数组中消失的数字 | Easy | C++ | - | |
75 | 颜色分类 | Medium | C++ | - | |
406 | 根据身高重建队列 | Medium | C++ | vector 和list 的insert() |
- |