将该专栏的题目刷完,仔细学习整理,冲刺大厂没问题加油!!!!
文章目录
一、数组
| 序号 | 题目 | 知识点 |
|---|
| 01 | 关于数组你不得不知道的事 | 数组方法总结 |
| 35 | 搜索插入位置 | 二分法总结 |
| 27 | 移除元素 | 双指针法 |
| 209 | 长度最小的子数组 | 滑动窗口 |
| 59 | 螺旋矩阵 II | 模拟数组,关键确定边界条件 |
二、链表
| 序号 | 题目 | 知识点 |
|---|
| 01 | 链表基础知识 | 链表 |
| 203 | 移除链表元素 | 链表引入虚拟头结点 |
| 707 | 设计链表 | 虚拟头节点,链表基本操作 |
| 206 | 翻转链表 | 双指针 |
| 19 | 删除链表的倒数第 N 个结点 | 虚拟头结点,双指针 |
| 142 | 环形链表 II | 双指针,快慢指针差为什么是1 |
| 25 | K 个一组翻转链表 | |
| 141 | 链表问题 | 快慢指针、判断环、计算环的长度 |
三、哈希表
| 序号 | 题目 | 知识点 |
|---|
| 01 | 关于哈希表,你不得不知道的事情 | 哈希表基础知识 |
| 242 | 有效的字母异位词 | 数组哈希表 |
| 349 | 两个数组的交集 | set 集合哈希表 |
| 202 | 快乐数 | set 集合哈希表 |
| 1 | 两数之和 | map 集合 |
| 454 | 四数相加 II | map 集合 |
| 383 | 赎金信 | 数组哈希表 |
| 41 | 缺失的第一个正数 | 原地哈希 |
四、字符串
| 序号 | 题目 | 知识点 |
|---|
| 541 | 反转字符串 II | 优化for循环,字符数组转字符串 |
| 剑指offer 05 | 替换空格 | 字符的比较 |
| 151 | 翻转字符串 | 字符串相关API,集合翻转 |
| 剑指offer 58 | 左旋转字符串 | 字符串的截取 |
| 05 | KMP 理论 | KMP |
| 06 | 实现 strStr() | KMP具体实现 |
| 459 | 重复的子字符串 | KMP 应用 |
五、双指针法
| 序号 | 题目 | 知识点 |
|---|
| 01 | 双指针 | 应用在数组或者字符串或者链表 |
| 15 | 三数之和 | 双指针,数组转为列表Arrays.asList(1,2,3); |
| 18 | 四数之和 | 双指针 |
六、栈与队列
| 序号 | 题目 | 知识点 |
|---|
| 01 | 关于队列和栈你不得不知道的事 | 栈和队列 |
| 232 | 用栈实现队列 | 栈 |
| 225 | 用队列实现栈 | 队列 |
| 20 | 有效的括号 | 栈 |
| 1047 | 删除字符串中的所有相邻重复项 | 栈,栈转为字符串 |
| 150 | 逆波兰表达式求值 | 栈 |
| 239 | 滑动窗口最大值 | 单调队列 |
| 347 | 前 K 个高频元素 | 优先级队列 |
| 09 | 表达式计算 | 双栈计算 |
七、二叉树
| 力扣序号 | 题目 | 知识点 |
|---|
| 01 | 关于二叉树,你不得不知道的事情 | 二叉树 |
| 02 | 原来二叉树中的递归这么简单 | 二叉树递归遍历 |
| 03 | 原来二叉树中的非递归这么简单 !!! | 二叉树非递归遍历 |
| 04 | 前后中序遍历统一写法 | 上面的非递归已经够用 |
| 102&107&199&637&429 | 层序遍历、右视图、层平均值、N叉树的层序遍历 | 二叉树层序遍历,List 集合翻转 |
| 226 | 翻转二叉树 | 前序遍历,递归,非递归,层序遍历 |
| 101 | 对称二叉树 | 递归,迭代 |
| 104&559 | 二叉树的最大深度 | 二叉树的最大深度,N叉树的最大深度 |
| 111 | 二叉树的最小深度 | 递归,迭代 |
| 222 | 完全二叉树的节点个数 | 递归,迭代 |
| 110 | 平衡二叉树 | 递归 |
| 257 | 二叉树的所有路径 | 递归,迭代,回溯 |
| 100 | 相同的树 | 递归 |
| 404 | 左叶子之和 | 递归,迭代 |
| 513 | 找左下角的值 | 迭代,递归 |
| 112&113 | 终于搞明白了二叉树的递归函数是否需要返回值 !!! | 递归函数是否需要返回值 |
| 106&105 | 构造二叉树也可以如此简单 !!! | 构造二叉树 |
| 654 | 最大二叉树 | 递归,处理数组下标 |
| 617 | 合并两个二叉树 | 递归 |
| 700 | 二叉搜索树中的搜索 | 二叉搜索树,递归,迭代 |
| 98 | 验证二叉搜索树 | 中序遍历,递归,迭代 |
| 530 | 二叉搜索树的最小绝对差 | 中序遍历,递归,迭代 |
| 501 | 二叉搜索树中的众数 | 中序遍历,递归 |
| 236 | 二叉树的最近公共祖先 | 后序遍历处理逻辑 |
| 235 | 二叉搜索树的最近公共祖先 | 前序遍历处理逻辑 |
| 701 | 二叉搜索树中的插入操作 | 递归,迭代 |
| 450 | 删除二叉搜索树中的节点 | 递归,删除节点 |
| 669 | 修剪二叉搜索树 | 递归 |
| 108 | 将有序数组转换为二叉搜索树 | 递归,二叉搜索树特性 |
| 538 | 把二叉搜索树转换为累加树 | 递归,发现规律,前驱 |
| 补充 | 二叉树的深度 | DFS,BFS |
注解:
八、回溯法
| 序号 | 题目 | 知识点 |
|---|
| 01 | 关于回溯算法,你不得不知道的事情 | 回溯法模板 |
| 77 | 组合 | 回溯,剪枝优化 |
| 216 | 组合总和 | 回溯,剪枝优化 |
| 17 | 电话号码的字母组合 | 回溯,字符串 StringBuilder |
| 39 | 组合总和 I | 回溯,剪枝优化 |
| 40 | 组合总和 II | 回溯,标志数组 |
| 131 | 分割回文串 | 回溯,切割问题 |
| 93 | 复原 IP 地址 | 回溯,切割,判断子字符串 |
| 78 | 子集 | 回溯 |
| 90 | 子集II | 回溯,标志数组 |
| 491 | 递增子序列 | 回溯,去重,set 集合 |
| 46 | 全排列 | 回溯,标识数组 |
| 47 | 全排列II | 标志数组,去重 |
| 332 | 重新安排行程 | 待解 |
| 51 | N 皇后 | 引入二维数组记录存储的情况 |
| 37 | 解数独 | 二维递归 |
注解
九、贪心算法
| 序号 | 题目 | 知识点 |
|---|
| 01 | 关于贪心算法,你不得不知道的事情 | 贪心算法思路 |
| 455 | 分发饼干 | 贪心算法 |
| 376 | 摆动序列 | 贪心算法 |
| 53 | 最大子序列和 | 贪心算法 |
| 122 | 买卖股票的最佳时机 II | 贪心算法,动态规划 |
| 55 | 跳跃游戏 | 贪心算法 |
| 45 | 跳跃游戏 II | |
| 1005 | K次取反后最大化的数组和 | 贪心算法,数组自定义排序 |
| 134 | 加油站 | 贪心算法 |
| 678 | 有效的括号字符串 | 贪心 |
| 135 | 分发糖果 | 从左到右,从右到左 |
| 406 | 根据身高重建队列 | 两个维度 |
| 452 | 用最少数量的箭引爆气球 | 贪心,重叠数组 |
| 435 | 无重叠的区间 | 二维数组排序,贪心 |
| 763 | 划分字母区间 | 遍历,更新右边界 |
| 56 | 合并区间 | 左边界排序,遍历 |
| 714 | 买卖股票的最佳时机含手续费 | 贪心 |
| 968 | 监控二叉树 | |
十、动态规划
| 序号 | 题目 | 知识点 |
|---|
| 01 | 关于动态规划,你不得不知道的事情 | 动态规划思想 |
| 509 | 斐波那契数列 | 动态规划 |
| 剑指offer | 爬台阶 | 动态规划 |
| 746 | 最小花费爬楼梯 | 动态规划 |
| 62 | 不同的路径 | 动态规划 |
| 63 | 不同的路径 II | 动态规划 |
| 343 | 整数拆分 | 动态规划 |
| 96 | 不同的二叉搜索树 | 动态规划 |
| 09 | 关于背包问题,你不得不知道的事情 | 背包问题 |
| 416 | 分割等和子集 | 背包问题, |
| 1049 | 最后一块石头的重量 II | 背包问题 |
| 494 | 求解目标和 | 背包问题 |
| 474 | 一和零 | 背包问题 |
| 14 | 关于完全背包,你不得不知道的事? | 完全背包问题 |
| 518 | 零钱兑换II | 完全背包,组合问题 |
| 377 | 组合总和 IV | 完全背包,排列问题 |
| 17 | 爬台阶 | 完全背包,排列问题 |
| 322 | 零钱兑换 | 完全背包,组合问题,最小数 |
| 279 | 完全平方数 | 完全背包,组合问题,最小数 |
| 139 | 单词拆分 | 完全背包 |
| 198 | 打家劫舍 | 常规动态规划 |
| 213 | 打家劫舍II | 动态规划 |
| 337 | 打家劫舍III | |
| 123 | 买卖股票的最佳时机 III | |
| 309 | 最佳股票时机含冷冻期 | |
| 300 | 最长递增子序列 | 数组参数初始化赋值 |
| 674 | 最长连续递增序列 | |
| 718 | 最长重复子数组 | 处理二维数组赋初值的情况 |
| 1143&1035&392&583 | 最长公共子序列&不相交的线&判断子序列&两个字符串的删除操作 | |
| 72 | 编辑距离 | |
| 647 | 回文子串 | |
| 5 | 最长回文子串 | 子序列 |
| 516 | 最长回文子序列 | |
注解:
十一、单调队列
| 序号 | 题目 | 知识点 |
|---|
| 739 | 每日测温 | 递增栈 |
| 496 | 下一个更大元素 I | |
| 其他 | 单调栈取最大子序列 | |
| 402 | 移掉K位数字 | |
| 316 | 去除重复字母 | |
十一、输入输出练习
| 序号 | 题目 | 知识点 |
|---|
| 01 | 漂亮的字符串 | 字符串,sc.hasNext()的作用 |
| 02 | 牛星十进制 | 通过率为0时,除了测试案例,还需要自己写个测试案例,发现问题所在 |
| 03 | | |
十二、补充目录
| 题号 | 题目 | 知识点 |
|---|
| 23 | 合并K个升序链表 | 优先级队列,分而治之算法 |
| 32 | 最长有效括号 | 栈 |
| 42 | 接雨水 | 动态规划思想 |
| 49 | 字母异位词分组 | Steam流,字符串,map |
| 56 | 合并区间 | 二维数组排序 |
| 76 | 最小覆盖子串 | 滑动窗口 |
| 79 | 单词搜索 | 回溯思想,学会控制方向数组用法 |
| 84 | 柱状图中最大的矩形 | 单调栈 |
| 64 | 最小路径和 | 动态规划 |
| 200 | 岛屿类问题 | DFS |
| 128 | 最长连续序列 | 哈希 |
| 146 | LRU缓存~ | 哈希链表,双向链表 |
| 148 | 排序链表~ | 归并排序 |
| 152 | 乘积最大的子数组 | 动态规划 |
| 210 | 课程表 | 拓扑排序,邻接表,有向无环图 |
| 621 | 任务调度器 | 贪心,优先级队列 |
| 581 | 最短无序连续数组 | 左右遍历 |
| 560 | 和为k的子数组 | 前缀合,哈希表 |
| 437 | 路径总和III | 前缀合,哈希表 |
| 215 | 数组中的第k个最大的元素 | 优先级队列,减而治之 |
| 287 | 寻找重复数 | 快慢指针,二分法 |
| 438 | 找到字符串中所有字母异位词 | 滑动窗口+数组 |
| 221 | 最大正方形求解 | 动态规划 |
| 238 | 除自身以外的数组 乘积 | 贪心,数组 |
| 208 | 实现Trie(前缀树) | |
| 136,137,260 | 异或题目 | |
| 448 | 找到所有数组中消失的数字 | 原地数组 |
| 160 | 相交链表 | 快慢指针(快指针先走长度差),或者合并两个链表先让两者长度相同 |
| 338 | 比特位计数 | 奇偶性 |
| 其他 | 链表求和 | 栈、和进位 |
| 169 | 多数元素 | 摩尔投票 |
| 155 | 最小栈 | 辅助栈 |
十三、真题练习
| 序号 | 题目 | 时间 |
|---|
| 01 | K距离间隔重排字符串 | 华为2面手撕代码 |
| 02 | 分割数组最大值 | 华为机试 |
| 03 | 天平平衡 | 华为机试 |
| 04 | 返回单一数字字符串的个数 | 华为机试 |
| 05 | 不重叠数组最大和 | 阿里机试 |
| 06 | 牛星十进制 | 阿里机试 |
| 07 | 可能的排名 | 百度机试 |
| 08 | 完全二叉树最短路径问题 | 百度机试 |
| 09 | 链表中的最小字典序 | 腾讯机试 |
| 10 | 广告公司发放广告 | 腾讯机试 |
| 11 | 判断字符串是否相等 | 腾讯机试 |
| 12 | 做任务 | 中兴比特比赛 |
| 13 | 子串翻转 | 美团机试 |
| 14 | 序列旋转 | 美团机试 |
| 15 | 养精灵 | 腾讯-正式 |
| 16 | 01串 | 腾讯-正式 |
| 17 | 01序列 | 腾讯-正式 |
| 18 | 荷兰国旗问题 | 小米-正式 |
| 19 | 整除 | 美团-正式 |
| 20 | 交换 | 美团-正式 |
| 21 | 歌单 | 美团-正式 |
| 22 | 反转乘法表 | 百度-正式 |
| 23 | 实现计算器 | |
十四、扩展目录
| 题号 | 题目 | 知识点 |
|---|
| 01 | 最小公倍数和最大公约数 | 最小公倍数,最大公约数 |
| 02 | HR 面准备 | |
| 03 | Lazy 初始化(延迟初始化) | |
| 04 | 牛客网-剑指offer | |
| 05 | 刷题知识点 | |
| 06 | 算法知识点 | |
| 07 | (Java)树相关知识点学习 | |
| 08 | (Java)栈相关知识点学习 | |
| 09 | (Java)数组相关知识点学习 | |
| 10 | (Java)字符串相关知识点学习 | |
| 11 | (Java)数学相关知识点学习 | |
| 12 | (Java)链表相关知识点学习 | |
| 13 | 一篇文章带你搞定Java 中的与、或、异或、移位运算 | |
| 14 | (Java)刷题技巧 | |
| 15 | 动态规划 | |
| 16 | 一篇文章带你搞定牛客网的输入输出示例格式 | |
| 17 | 异或题目 | |
对于数学性质的题目,首先写几项发现规律,笔试时可以写成代码注释的情况