数据结构和算法是一个程序员的基石,本仓库用于个人学习基本数据结构和算法。
题目指数:表征题目中设计技巧的程度, 1 到 5 颗⭐️, ⭐️越多表示题目设计的越好,值得学习
序号 | 题目名称 | 难易程度 | 归类 | 题目指数 | 技巧 |
---|---|---|---|---|---|
1 | 两数之和 | 简单 | 数组 | ||
2 | 两数相加 | 中等 | 链表 | 哑结点 | |
3 | 无重复字符的最长子串 | 中等 | string | 滑动窗口 | |
4 | 寻找两个正序数字的中位数 | 困难 | 数组 | 类似双指针,记录当前值和前一个值 | |
7 | 整数反转 | 数组 | |||
8 | 字符串转整型 | string | |||
9 | Palindrome Number | ||||
11 | 盛最多水的容器 | 中等 | 数组 | 左右指针 | |
14 | 最长公共前缀 | ||||
15 | 三数之和 | 中等 | 数组 | 排序,左右指针 | |
19 | 删除链表的倒数第N个结点 | 中等 | 链表 | 快慢指针 | |
20 | 有效的括号 | 简单 | string | ||
21 | 合并两个有序链表 | 简单 | 链表 | 哑结点 | |
23 | 合并K个排序链表 | 困难 | 链表 | 递归 | |
24 | 两两交换链表中的节点 | 中等 | 链表 | ||
26 | 从排序数组中删除重复项 | 简单 | 数组 | 双指针,前后指针 | |
27 | 移除元素 | 简单 | 数组 | 双指针,前后指针 | |
34 | 在排序数组中查找元素的第一个和最后一个位置 | 中等 | 数组 | 双指针,左右指针 | |
43 | 字符串相乘 | 中等 | 字符串 | ⭐️⭐️ | 细节题 |
45 | 跳跃游戏 II | ||||
46 | 全排列 | 数组 | |||
53 | 最大子数组和 | 中等 | 数组 | ⭐️⭐️⭐️ | 动态规划 |
54 | 螺旋矩阵 | 数组 | |||
55 | 跳跃游戏 | ||||
58 | 最后一个单词的长度 | 简单 | 字符串 | ||
61 | 旋转链表 | 中等 | 链表 | ||
62 | 不同路径 | 中等 | 动态规划 | ||
64 | 最小路径和 | 中等 | 动态规划 | ||
66 | 加一 | 简单 | 数组 | ||
67 | 二进制求和 | 简单 | 字符串 | 细节题 | |
70 | 爬楼梯 | 简单 | 动态规划 | ||
75 | 颜色分类 | 中等 | 数组 | ||
78 | 子集 | 数组 | |||
80 | 从排序数组中删除重复项II | 数组 | ⭐️⭐️ | 快慢指针 | |
82 | 从排序链表中移除重复元素 II | 中等 | 链表 | ⭐️⭐️⭐️ | 哑结点,快慢指针 |
83 | 从排序链表中移除重复元素 | 简单 | 链表 | ||
86 | 分割链表 | 中等 | 链表 | 哑结点 | |
88 | 合并两个有序数组 | 简单 | 数组 | ||
89 | 格雷编码 | ||||
92 | 反转链表 II | 链表 | |||
94 | 二叉树的中序遍历 | 简单 | 二叉树 | 栈 | |
95 | 不同的二叉搜索树 | 中等 | 二叉树 | ||
96 | 不同的二叉搜索树 | 中等 | 二叉树 | ⭐️⭐️ | 动态规划 |
98 | 验证二叉搜索树 | 中等 | 二叉搜索树 | ⭐️⭐️ | 三种算法 |
99 | 恢复二叉树 | 中等 | |||
100 | 相同的树 | 简单 | 二叉树 | ||
101 | 对称二叉树 | 简单 | 二叉树 | ||
102 | 二叉树的层序遍历 | 中等 | 二叉树 | ⭐⭐️⭐️ | BFS, DFS |
104 | 二叉树的最大深度 | 简单 | 二叉树 | ⭐️⭐️ | 递归,层序遍历,dfs |
105 | 从前序与中序遍历序列构造二叉树 | 中等 | 二叉树 | ||
106 | 从中序和后序遍历序列构造二叉树 | 中等 | 二叉树 | ||
107 | 二叉树的层序遍历2 | 中等 | 二叉树 | ||
110 | 平衡二叉树 | 简单 | 二叉树 | ||
111 | 二叉树的最小深度 | 简单 | 二叉树 | ||
112 | 路径总和 | 简单 | 二叉树 | ||
113 | 路径总和2 | 中等 | 二叉树 | ⭐️⭐️⭐️ | DFS |
118 | 杨辉三角 | 数组 | |||
121 | 买卖股票的最佳时机 | 简单 | |||
122 | 买卖股票的最佳时机 II | ||||
123 | 买卖股票 | ||||
125 | 验证回文串 | 简单 | 字符串 | 双指针 | |
129 | 求根节点到叶子节点数字之和 | 中等 | 二叉树 | ⭐️⭐️ | DFS |
141 | 环形链表 | 简单 | 链表 | ⭐️⭐️ | 快慢指针 |
142 | 环形链表2 | 中等 | ⭐️⭐️⭐️ | 快慢指针 | |
143 | 重排链表 | 中等 | 链表 | ⭐️⭐️⭐️ | |
144 | 二叉树的前序遍历 | 简单 | 二叉树 | ||
145 | 二叉树的后序遍历 | 简单 | 二叉树 | ⭐️⭐️ | 栈 |
147 | 对链表进行插入排序 | 中等 | 链表 | ||
149 | 直线上最多的点数 | ||||
148 | 排序链表 | 链表 | |||
151 | 翻转字符串里的单词 | ||||
155 | 最小栈 | 栈 | |||
156 | 上下翻转二叉树 | 中等 | 二叉树 | ||
160 | 两个链表的交点 | 简单 | 链表 | ||
167 | 两数之和II | 简单 | 数组 | ||
189 | 旋转数组 | 中等 | 数组 | ⭐️⭐️ | |
191 | 位1的个数 | 简单 | 数学 | ||
199 | 二叉树的右视图 | 中等 | 二叉树 | 层序遍历 | |
203 | 移除链表元素 | 简单 | 链表 | ||
206 | 反转链表 | 简单 | 链表 | ||
209 | 长度最小的子数组 | 中等 | 数组 | ⭐️⭐️⭐️ | |
215 | 数组中的第K个最大元素 | 数组 | 栈 | ||
219 | 存在重复元素II | 简单 | 数组 | ||
220 | 存在重复元素III | 困难 | 数组 | ⭐️⭐️⭐️ | 滑动窗口 |
231 | 2的幂 | 简单 | |||
234 | 回文链表 | 简单 | 链表 | ||
236 | 二叉树的最近公共祖先 | 中等 | 二叉树 | ||
239 | 滑动窗口最大值 | 困难 | 单调队列 | ||
246 | 中心对称数 | ||||
257 | 二叉树的所有路径 | 简单 | 二叉树 | DFS | |
264 | 丑数 | ||||
270 | 最接近的二叉搜索树 | 简单 | 二叉树 | ||
零钱兑换 | 中等 | 动态规划 | |||
283 | 移动零 | 简单 | 数组 | 就地替换 | |
292 | Nim游戏 | ||||
300 | 最长上升子序列 | 中等 | 动态规划 | ||
322 | 零钱兑换 | 中等 | 动态规划 | ||
328 | 奇偶链表 | 中等 | 链表 | ||
331 | 验证二叉树的前序序列化 | 中等 | 二叉树 | ⭐️⭐️⭐️ | 栈;出度,入度 |
338 | 比特位计数 | ||||
344 | 反转字符串 | 简单 | 字符串 | 双指针 | |
345 | 反转字符串中的元音字母 | ||||
404 | 左叶子之和 | 简单 | 二叉树 | ||
415 | 字符串相加 | 简单 | 字符串 | ||
424 | 替换后的最长重复字符 | 中等 | string | ⭐️⭐️ | 滑动窗口 |
429 | N叉树的层序遍历 | 中等 | N叉树 | ||
447 | 回旋镖的数量 | 中等 | 数组 | ||
461 | 汉明距离 | 简单 | 数学 | ||
476 | 汉明距离 | 简单 | |||
480 | 滑动窗口中位数 | 困难 | 滑动窗口 | ⭐️⭐️⭐️⭐️ | |
485 | 最大连续1的个数 | 简单 | 数组 | 前后指针 | |
498 | 对角线遍历 | 数组 | |||
509 | 斐波那契数 | 简单 | 动态规划 | ||
538 | 把二叉树转换成累加树 | 简单 | 二叉树 | ||
521 | 最长特殊序列 I | ||||
543 | 二叉树的直径 | 简单 | 二叉树 | ||
545 | 二叉树的边界 | 中等 | 二叉树 | ||
563 | 二叉树的坡度 | 简单 | 二叉树 | ||
576 | 字符串的排列 | ||||
589 | N叉树的前序遍历 | 简单 | N叉树 | ⭐️⭐️ | 迭代,栈 |
590 | N叉树的后序遍历 | 简单 | N叉树 | ⭐️⭐️ | 迭代,栈 |
594 | 最长和谐子序列 | ||||
617 | 合并二叉树 | 简单 | 二叉树 | ||
621 | 任务调度器 | ||||
622 | 设计循环队列 | 中等 | |||
637 | 二叉树的层平均值 | 中等 | 二叉树 | ||
641 | 设计循环双端队列 | 中等 | |||
654 | 最大二叉树 | 中等 | 二叉树 | ||
655 | 输出二叉树 | 中等 | 二叉树 | ||
662 | 二叉树的最大宽度 | 中等 | 二叉树 | ||
669 | 修剪二叉搜索树 | 简单 | 二叉搜索树 | ||
674 | 最长连续递增序列 | 简单 | 数组 | ||
695 | 岛屿的最大面积 | 广度优先搜索 | |||
703 | 数据流中第K大元素 | 简单 | |||
707 | 设计链表 | 链表 | |||
724 | 寻找数组的中心索引 | 简单 | 数组 | ||
747 | 至少是其他数字两倍的最大数 | 简单 | 数组 | ||
814 | 二叉树剪枝 | 中等 | 二叉树 | ||
820 | 单词的压缩编码 | ||||
876 | Middle of The Linked List | ||||
905 | 按奇偶排序数组 | 简单 | 数组 | 对撞指针 | |
914 | 卡牌分组 | ||||
977 | 有序数组的平方 | 简单 | 数组 | 对撞指针 | |
933 | Number of Recent Calls | ||||
941 | 有效的山型数组 | 简单 | 数组 | ||
987 | 二叉树的垂序遍历 | 困难 | 二叉树 | ⭐️⭐️⭐️ | 复杂的层序遍历 |
993 | 二叉树的堂兄弟节点 | 简单 | 二叉树 | ||
1089 | 重复零 | 简单 | 数组 | ||
1104 | 二叉树寻路 | 中等 | 二叉树 | ||
1161 | 最大层内元素和 | 中等 | 二叉树 | 层序遍历 | |
1162 | 地图分析 | ||||
1208 | 尽可能使字符串相等 | 中等 | string | ⭐️⭐️⭐️ | 滑动窗口 |
1295 | 找出具有偶数位数字的个数 | 简单 | 数组 | ||
1299 | 将每个元素替换为右侧最大元素 | 简单 | 数组 | 就地替换 | |
1302 | 层数最深叶子节点的和 | 中等 | 二叉树 |