从小爱刷题!
从小爱刷题!
✅ 完成
❌ 未完成,置于标题前,补卡后变成🔺,🌀啊啊啊,没见过,非常规套路,技巧
⭐ 收藏 🟢 简单 🟠 中等 🟣 困难 🔵 其它
剑指Offer 第二版
- 本章参考《剑指Offer》第二版。
2022年03月
题目编号 |
---|
🟠[ 2. 两数相加、24. 两两交换链表中的节点];🟢[ 21. 合并两个有序链表 ];🟣[ 10. 正则表达式匹配 ] |
🟠[ 50. Pow(x, n) ];🟢[ ];🟣[ ⭐25. K 个一组翻转链表、60. 排列序列 ] |
🟠[ 143. 重排链表、 ];🟢[ 203. 移除链表元素、206. 反转链表、231. 2 的幂 ];🟣[ ] |
🟠[ 剑指 Offer 04. 二维数组中的查找、 剑指 Offer 07. 重建二叉树];🟢[ 234. 回文链表、剑指 Offer 03. 数组中重复的数字、剑指 Offer 05. 替换空格、剑指 Offer 06. 从尾到头打印链表 ];🟣[ ] |
🟠[ ⭐剑指 Offer 12. 矩阵中的路径 ];🟢[ 144. 二叉树的前序遍历、94. 二叉树的中序遍历、145. 二叉树的后序遍历、102. 二叉树的层序遍历、剑指 Offer 09. 用两个栈实现队列、剑指 Offer 10- I. 斐波那契数列、剑指 Offer 10- II. 青蛙跳台阶问题、⭐剑指 Offer 11. 旋转数组的最小数字 ];🟣[ ] |
🟠[ 剑指 Offer 13. 机器人的运动范围、剑指 Offer 14- I. 剪绳子 ];🟢[ ];🟣[ ] |
共计28题。 |
2022年04月
2022年05月
题目编号 |
---|
子集/组合/排列(重复元素不复选):🟠[ 90. 子集 II、40. 组合总和 II(记得排序)、47. 全排列 II(组合总数,上面还有个全排列) ];🟢[ ];🟣[ ] |
🟠[ 剑指 Offer 49. 丑数、216. 组合总和 III、39. 组合总和];🟢[ ];🟣[ ] |
🟠[ ];🟢[ 剑指 Offer 50. 第一个只出现一次的字符、⭐剑指 Offer 52. 两个链表的第一个公共节点(哈希表或双指针)、剑指 Offer 53 - I. 在排序数组中查找数字 I(二分)、剑指 Offer 53 - II. 0~n-1中缺失的数字(二分)、剑指 Offer 54. 二叉搜索树的第k大节点(反向中序遍历)、剑指 Offer 55 - I. 二叉树的深度、剑指 Offer 55 - II. 平衡二叉树(求高度,自底向上) ];🟣[ 剑指 Offer 51. 数组中的逆序对(归并排序) ] |
🟠[ 剑指 Offer 56 - I. 数组中数字出现的次数(位运算)、剑指 Offer 56 - II. 数组中数字出现的次数 II(位运算计数)、 ];🟢[ 剑指 Offer 57. 和为s的两个数字(哈希或双指针)];🟣[ ] |
🟠[ ⭐剑指 Offer 59 - II. 队列的最大值(滑动窗口最大值,单调队列) ];🟢[ ⭐剑指 Offer 57 - II. 和为s的连续正数序列(枚举或双指针)、剑指 Offer 58 - I. 翻转单词顺序、⭐l剑指 Offer 58 - II. 左旋转字符串(类似冒泡,原地翻转)、剑指 Offer 61. 扑克牌中的顺子];🟣[ ⭐剑指 Offer 59 - I. 滑动窗口的最大值(堆、单调队列)] |
🟠[ ⭐剑指 Offer 63. 股票的最大利润 (维护最小值)、剑指 Offer 64. 求1+2+…+n(有趣的递归,好玩的语言特性)、剑指 Offer 66. 构建乘积数组(正反向遍历各一次)];🟢[ ⭐剑指 Offer 65. 不用加减乘除做加法(位运算技巧)、⭐剑指 Offer 68 - I. 二叉搜索树的最近公共祖先、⭐剑指 Offer 68 - II. 二叉树的最近公共祖先 ];🟣[ ];🔵[ ] |
共计29题。 |
未完成题目列表 ❌ |
---|
剑指 Offer 19. 正则表达式匹配、剑指 Offer 20. 表示数值的字符串、剑指 Offer 37. 序列化二叉树、剑指 Offer 43. 1~n 整数中 1 出现的次数、剑指 Offer 67. 把字符串转换成整数(自动机) |
专题练习
本章参考《labuladong的算法笔记》《代码随想录》。
可能存在与《剑指Offer》重复的题目链接。
数组专题
数组 |
---|
(代码随想录):704. 二分查找(参考lower_bound实现)、27. 移除元素(模拟std::remove()函数,last指向当前可覆盖的位置)、⭐26. 删除有序数组中的重复项(last指向“去重数组”的最后一个元素)、⭐844. 比较含退格的字符串(重构字符串或双指针)、977. 有序数组的平方、⭐209. 长度最小的子数组(双指针滑动窗口,前缀和+二分)、904. 水果成篮(双指针滑动窗口,最大窗口)、⭐76. 最小覆盖子串(滑动窗口,最小窗口总结)、⭐剑指 Offer 29. 顺时针打印矩阵(第二次做,边界还是没处理好,参考)、54. 螺旋矩阵(同剑指 Offer 29)、59. 螺旋矩阵 II |
🔺其它: |
链表专题
链表 |
---|
(代码随想录):203. 移除链表元素(迭代或递归)、⭐707. 设计链表、206. 反转链表(递归+迭代)、24. 两两交换链表中的节点(递归+迭代)、19. 删除链表的倒数第 N 个结点(快慢指针)、面试题 02.07. 链表相交(指针的哈希或双指针)、141. 环形链表(判环哈希,\(O(n)\)空间,Floyd 判圈算法 \(O(1)\)空间)、⭐142. 环形链表 II(快慢指针,数学,转化成找两个链表的交点)、🌀287. 寻找重复数(快慢指针或鸽巢原理+二分) |
🔺其它:二分查找的技巧 - 力扣 |
哈希表
哈希表 |
---|
(代码随想录):242. 有效的字母异位词、49. 字母异位词分组、⭐438. 找到字符串中所有字母异位词(滑动窗口 + 哈希,利用vector operator=判断相等,可优化)、⭐454. 四数相加 II(不可暴力,参考两数之和+哈希实现\(O(n^2)\))、⭐15. 三数之和(哈希去重较复杂,排序+双指针)、⭐18. 四数之和(参考三数之和,考虑int溢出) |
🔺其它:哈希算法总结 |
字符串
字符串 |
---|
(代码随想录):344. 反转字符串(学习reverse的实现)、541. 反转字符串 II(同344)、剑指 Offer 05. 替换空格(find,repalce方法)、151. 颠倒字符串中的单词(reverse,erase用法)、剑指 Offer 58 - II. 左旋转字符串(三次翻转思路)、459. 重复的子字符串(暴力要会,巧解思路) |
🔺字符串专题需要多加练习,出了力扣,还需要练习I/O操作,例如stringstream、Python字符串处理技巧等。 🔺其它:KMP算法、 |
队列与栈
队列与栈 |
---|
(代码随想录):232. 用栈实现队列(代码复用)、225. 用队列实现栈(辅助队列用于que'ba交换队列或单队列方法)、⭐20. 有效的括号(栈)、1047. 删除字符串中的所有相邻重复项(直接在字符串上push_back, pop_back())、150. 逆波兰表达式求值(二叉树和逆波兰式、中缀表达式,注意除数和被除数的顺序)、347. 前 K 个高频元素(哈希+堆求topK,\(O(nlogk)\)) |
单调栈 |
---|
739. 每日温度 |
单调队列 |
---|
239. 滑动窗口最大值(单调队列(deque实现)、堆) |
二叉树
二叉树 |
---|
技巧类
双指针 |
---|
(同上面专题存在重复)27. 移除元素、344. 反转字符串、151. 颠倒字符串中的单词、206. 反转链表、19. 删除链表的倒数第 N 个结点、142. 环形链表 II、面试题 02.07. 链表相交、15. 三数之和、18. 四数之和 |
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!