数据结构和算法是一个程序员的基石,本仓库用于个人学习基本数据结构和算法。
题目指数:表征题目中设计技巧的程度, 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 | 层数最深叶子节点的和 | 中等 | 二叉树 |