代码:https://github.com/fuzh97/leetcode
1-100
序号 | 题目 | tag |
---|---|---|
1 | 两数之和 | 数组,hash |
2 | 两数相加 | 链表 |
3 | 无重复字符的最长子串 | 字符串,hash,滑动窗口 |
4 | 寻找两个正序数组的中位数 | 数组 二分 |
5 | 最长回文子串 | 动态规划 |
6 | Z字型变换 | 数组 |
7 | 整数反转 | 数学 |
8 | 字符串转换整数 (atoi) | 字符串模拟 |
9 | 回文数 | 数学 |
11 | 盛最多水的容器 | 双指针 |
12 | 整数转罗马数字 | 字符串模拟 |
13 | 罗马数字转整数 | 字符串模拟 |
14 | 最长公共前缀 | 字符串遍历 |
15 | 三数之和 | 双指针 |
16 | 最接近的三数之和 | 双指针 |
17 | 电话号码的字母组合 | dfs,bfs |
18 | 四数之和 | 双指针 |
19 | 删除链表的倒数第N个节点 | 链表,双指针 |
20 | 有效的括号 | 栈 |
21 | 合并两个有序链表 | 链表 |
22 | 括号生成 | dfs |
24 | 两两交换链表中的节点 | 链表 |
26 | 删除排序数组中的重复项 | 数组,双指针 |
27 | 移除元素 | 数组,双指针 |
28 | 实现 strStr() | kmp |
31 | 下一个排列 | 数组 |
33 | 搜索旋转排序数组 | 二分 |
34 | 在排序数组中查找元素的第一个和最后一个位置 | 二分 |
35 | 搜索插入位置 | 二分 |
36 | 有效的数独 | 数组,hash |
38 | 外观数列 | 字符串模拟 |
39 | 组合总和 | dfs |
40 | 组合总和(2) | dfs |
43 | 字符串相乘 | 字符串模拟 |
45 | 跳跃游戏(2) | 贪心 |
46 | 全排列 | dfs,回溯剪枝 |
47 | 全排列(2) | dfs,回溯剪枝 |
48 | 旋转图像 | 矩阵 |
49 | 字母异位词分组 | hash |
53 | 最大子序和 | 动态规划 |
54 | 螺旋矩阵 | 矩阵 |
55 | 跳跃游戏 | 贪心 |
56 | 合并区间 | 排序,数组 |
57 | 插入区间 | 排序,数组 |
58 | 最后一个单词的长度 | 字符串模拟 |
59 | 螺旋矩阵(2) | 矩阵 |
61 | 旋转链表 | 链表 |
62 | 不同路径 | 动态规划 |
63 | 不同路径(2) | 动态规划 |
64 | 最小路径和 | 动态规划 |
67 | 二进制求和 | 字符串模拟 |
70 | 爬楼梯 | 动态规划 |
71 | 简化路径 | 字符流 |
73 | 矩阵置0 | 矩阵 |
74 | 搜索二维矩阵 | 数组 |
75 | 颜色分类 | 数组,排序 |
77 | 组合 | dfs,回溯 |
78 | 子集 | dfs,回溯 |
79 | 单词搜索 | dfs |
80 | 删除有序数组中的重复项(2) | 数组,双指针 |
81 | 搜索旋转排序数组(2) | 二分 |
86 | 分隔链表 | 链表 |
88 | 合并两个有序数组 | 数组,双指针 |
90 | 子集(2) | dfs,回溯 |
91 | 解码方法 | 动态规划 |
93 | 复原IP地址 | dfs,回溯 |
94 | 二叉树中序遍历 | 二叉树遍历 |
95 | 不同的二叉搜索树(2) | 回溯 |
97 | 交错字符串 | 动态规划 |
96 | 不同的二叉搜索树 | 二叉树,动态规划 |
98 | 验证二叉搜索树 | 二叉树遍历 |
101-200
序号 | 题目 | tag |
---|---|---|
101 | 对称二叉树 | 二叉树遍历 |
102 | 二叉树的层序遍历 | 二叉树遍历 |
104 | 二叉树的最大深度 | 二叉树遍历 |
105 | 从前序与中序遍历序列构造二叉树 | 二叉树构造 |
106 | 从中序与后序遍历序列构造二叉树 | 二叉树构造 |
108 | 将有序数组转换为二叉搜索树 | 二叉树 |
110 | 平衡二叉树 | |
112 | 路径总和 | 二叉树遍历 |
113 | 路径总和(2) | 二叉树遍历 |
114 | 二叉树展开为链表 | 二叉树 |
118 | 杨辉三角 | 数组 |
119 | 杨辉三角(2) | 数组,数学 |
120 | 三角形最小路径和 | 动态规划 |
121 | 买卖股票的最佳时机 | 动态规划 |
122 | 买卖股票的最佳时机(2) | 贪心算法 |
123 | 买卖股票的最佳时机(3) | 动态规划 |
125 | 验证回文串 | 字符串模拟 |
128 | 最长连续序列 | hash |
130 | 被围绕的区域 | dfs,bfs |
131 | 分割回文串 | 回溯,动态规划 |
134 | 加油站 | 贪心 |
136 | 只出现一次的数字 | hash,位运算 |
137 | 只出现一次的数字(2) | 位运算 |
138 | 复制带随机指针的链表 | 链表 |
139 | 单词拆分 | bfs |
141 | 环形链表 | 链表 |
142 | 环形链表(ii) | 链表 |
144 | 二叉树的前序遍历 | 二叉树 |
145 | 二叉树的后序遍历 | 二叉树 |
150 | 波兰表达式求值 | 栈 |
151 | 翻转字符串里的单词 | 双指针 |
152 | 最大乘积子数组 | 动态规划 |
153 | 寻找旋转排序数组中的最小值 | 二分 |
154 | 寻找旋转排序数组中的最小值(2) | 二分 |
155 | 最小栈 | 栈 |
160 | 相交链表 | 链表 |
162 | 寻找峰值 | 二分 |
165 | 比较版本号 | 双指针 |
167 | 两数之和(2) | 双指针 |
168 | Excel表列名称 | 进制转换 |
169 | 多数元素 | hash,摩尔投票 |
171 | Excel 表列序号 | 进制转换 |
179 | 最大数 | 排序 贪心 |
187 | 重复的DNA序列 | hash,滑动窗口 |
189 | 旋转数组 | 数组 |
198 | 打家劫舍 | 动态规划 |
200 | 岛屿数量 | dfs |
201-300
序号 | 题目 | tag |
---|---|---|
204 | 计算质数 | 数学 |
205 | 同构字符串 | hash |
206 | 反转链表 | 链表 |
208 | 实现前缀树 | 字典树 |
209 | 长度最小子数组 | 数组,滑动窗口 |
211 | 添加与搜索单词 | 字典树 |
213 | 打家劫舍(2) | 动态规划 |
215 | 数组中第k个最大元素 | 排序,堆,优先队列 |
216 | 组合总和(3) | dfs |
217 | 存在重复元素 | hash |
219 | 存在重复元素(2) | hash |
220 | 存在重复元素(3) | 数组,桶 |
221 | 最大正方形 | 动态规划 |
224 | 基本计算器 | 字符串模拟,栈 |
226 | 翻转二叉树 | 二叉树,bfs,dfs |
227 | 基本计算器(2) | 栈,字符串模拟 |
228 | 汇总区间 | 数组 |
229 | 求众数 | 摩尔投票 |
234 | 回文链表 | 链表 |
235 | 二叉搜索树的最近公共祖先 | 二叉树 |
236 | 二叉树的最近公共祖先 | 二叉树 |
238 | 除自身以外的数组的乘积 | 数组 |
240 | 搜索二维矩阵 II | 数组 |
241 | 为运算表达式设计优先级 | 分治 |
242 | 有效字母的异位词 | hash |
257 | 二叉树的所有路径 | dfs |
260 | 只出现一次的数字(3) | 位运算 |
268 | 丢失的数字 | 位运算 |
274 | H 指数 | 计数排序 |
275 | H 指数(2) | 二分 |
279 | 完全平方数 | 动态规划 |
283 | 移动零 | 快慢指针 |
284 | 顶端迭代器 | 链表 |
287 | 寻找重复数 | 二分 |
289 | 生命游戏 | 矩阵 |
290 | 单词规律 | hash |
295 | 数据流的中位数 | 堆排序 |
299 | 猜数字游戏 | hash |
300 | 最长上升子序列 | 动态规划 |
序号 | 题目 | tag |
---|---|---|
322 | 零钱兑换 | dfs,贪心,动态规划 |
338 | 比特数计位 | 数组,位运算 |
344 | 反转字符串 | 双指针 |
347 | 前k个高频元素 | 堆,优先队列 |
394 | 字符串解码 | 字符串,栈 |
399 | 除法求值 | dfs |
405 | 数字转换为十六进制数 | 进制转换 |
406 | 根据身高重建队列 | 数组 |
415 | 字符串加法 | 字符串模拟 |
416 | 分割等和子集 | 动态规划 |
437 | 路径总和 | dfs |
438 | 找到字符串中所有字母异位词 | 滑动窗口 |
448 | 找到所有数组中消失的数字 | 数组 |
453 | 最小操作次数使数组元素相等 | 数学 |
461 | 汉明距离 | 位运算 |
476 | 数字的补数 | 位运算 |
494 | 目标和 | dfs |
509 | 斐波那契数 | 数组 |
538 | 把二叉搜索树转换为累加树 | 二叉树遍历 |
541 | 反转字符串(2) | 双指针 |
543 | 二叉树的直径 | 二叉树遍历 |
547 | 省份数量 | bfs,dfs,并查集 |
560 | 和为k的子数组 | 前缀和 哈希 |
575 | 分糖果 | 贪心 |
830 | 较大分组的位置 | 数组 |
852 | 山脉数组的峰顶索引 | 二分 |
930 | 和相同的二元子数组 | 前缀和,hash |
1038 | 把二叉搜索树转换为累加树 | 二叉树遍历 |
1009 | 十进制整数的反码 | 位运算 |
1202 | 交换字符串中的元素 | 并查集 |
2136 | 面试题 17.10. 主要元素 | 数组,选举算法 |
剑指offer:
序号 | 题目 | tag |
---|---|---|
3 | 数组中重复的数字 | 数组 |
4 | 二维数组中的查找 | 数组 |
5 | 替换空格 | 字符串 |
6 | 从尾到头打印链表 | 栈,链表 |
9 | 用两个栈实现队列 | 栈,队列 |
11 | 旋转数组的最小数字 | 二分 |
12 | 矩阵中的路径 | 回溯,dfs |
13 | 机器人的运动范围 | 回溯 |
18 | 删除链表的节点 | 链表 |
21 | 调整数组顺序使奇数位于偶数前面 | 数组,双指针 |
22 | 链表中倒数第k个节点 | 链表 |
24 | 反转链表 | 链表 |
25 | 合并两个排序的链表 | 链表 |
26 | 树的子结构 | 二叉树 |
27 | 二叉树的镜像 | 二叉树,遍历 |
28 | 对称的二叉树 | 二叉树 |
30 | 包含min函数的栈 | 栈 |
32 - I | 从上到下打印二叉树 | 二叉树 |
32 - II | 从上到下打印二叉树 II | 二叉树 |
32 - III | 从上到下打印二叉树 III | 二叉树 |
34 | 二叉树中和为某一值的路径 | 二叉树 |
35 | 复杂链表的复制 | 链表 |
36 | 二叉搜索树与双向链表 | 二叉树,链表 |
40 | 最小的 k 个数 | 排序 |
41 | 数据流中的中位数 | 排序 |
42 | 连续子数组的最大和 | 动态规划 |
45 | 把数组排成最小的数 | 排序 |
46 | 把数字翻译成字符串 | 动态规划 |
47 | 礼物的最大价值 | 动态规划 |
48 | 最长不含重复字符的子字符串 | 滑动窗口 |
50 | 第一个只出现一次的字符 | 二分 |
52 | 两个链表的第一个公共节点 | 链表 |
53 - I | 在排序数组中查找数字 I | 二分 |
53 - II | 0~n-1中缺失的数字 | 二分 |
54 | 二叉搜索树的第k大节点 | 二叉树 |
55 - I | 二叉树的深度 | 二叉树 |
55 - II | 平衡二叉树 | 二叉树 |
57 | 和为s的两个数字 | 数组,双指针 |
58 - I | 翻转单词顺序 | 字符串 |
58 - II | 左旋转字符串 | 字符串 |
61 | 扑克牌中的顺子 | 排序 |
63 | 股票的最大利润 | 动态规划 |
64 | 求1+2+…+n | 递归 |
68 - I | 二叉搜索树的最近公共祖先 | 二叉树 |
68 - II | 二叉树的最近公共祖先 | 二叉树 |
剑指 Offer II
序号 | 题目 | tag |
---|---|---|
69 | 山峰数组的顶部 | 二分 |