从小爱刷题!

从小爱刷题!

✅ 完成

❌ 未完成,置于标题前,补卡后变成🔺,🌀啊啊啊,没见过,非常规套路,技巧

⭐ 收藏 🟢 简单 🟠 中等 🟣 困难 🔵 其它


剑指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月

题目编号
🟠[ 剑指 Offer 14- II. 剪绳子 II ];🟢[ ];🟣[ ]
🟠[ 剑指 Offer 16. 数值的整数次方(整型取反溢出)、⭐剑指 Offer 26. 树的子结构 ];🟢[ 剑指 Offer 15. 二进制中1的个数剑指 Offer 17. 打印从1到最大的n位数(全排列或大数模拟解法)、剑指 Offer 18. 删除链表的节点(力扣无法使用delete?)、剑指 Offer 21. 调整数组顺序使奇数位于偶数前面(快排交换思想)、剑指 Offer 22. 链表中倒数第k个节点(快慢指针或顺序遍历)、剑指 Offer 24. 反转链表剑指 Offer 25. 合并两个排序的链表、 ];🟣[ ]
🟠[ ⭐剑指 Offer 31. 栈的压入、弹出序列(这题完成得不好)、剑指 Offer 32 - I. 从上到下打印二叉树剑指 Offer 34. 二叉树中和为某一值的路径(递归) ];🟢[ 剑指 Offer 27. 二叉树的镜像剑指 Offer 28. 对称的二叉树⭐剑指 Offer 29. 顺时针打印矩阵(简单模拟仍需多练)、剑指 Offer 30. 包含min函数的栈(链表实现栈,头插法)、剑指 Offer 32 - II. 从上到下打印二叉树 II ];🟣[ ]
🟠[ 剑指 Offer 35. 复杂链表的复制(有点意思,哈希表遍历两边,或者回溯)、⭐剑指 Offer 36. 二叉搜索树与双向链表(递归,非常值得学习的题目) ];🟢[ ];🟣[ ];🔵 [华为两道面试题,主要考察数据结构]
🟠[ ⭐剑指 Offer 33. 二叉搜索树的后序遍历序列(递归分治、辅助单调栈)、⭐剑指 Offer 38. 字符串的排列(回溯、下一个排列) ];🟢[ 剑指 Offer 39. 数组中出现次数超过一半的数字(排序、哈希、摩尔投票法)、⭐剑指 Offer 40. 最小的k个数(快排思想、堆) ];🟣[ ⭐剑指 Offer 41. 数据流中的中位数(双堆求中位数、技巧) ]
🟠[ ⭐31. 下一个排列(next_permunation)、剑指 Offer 44. 数字序列中某一位的数字(找规律不是很有趣,溢出)、⭐剑指 Offer 46. 把数字翻译成字符串(记忆化搜索(自顶向下)、动态规划(自底向上))、剑指 Offer 47. 礼物的最大价值(动态规划) ];🟢[ ⭐剑指 Offer 42. 连续子数组的最大和 ];🟣[ ]
🟠[ 剑指 Offer 48. 最长不含重复字符的子字符串(滑动窗口、哈希) ];🟢[ ];🟣[ ]
🟠[ 46. 全排列(回溯)、207. 课程表(拓扑排序判环)、45. 跳跃游戏 II(记忆化搜索、动态规划)、55. 跳跃游戏(贪心)、1024. 视频拼接(贪心)、986. 区间列表的交集(贪心)、56. 合并区间1288. 删除被覆盖区间452 用最少数量的箭引爆气球435 无重叠区间64 最小路径和494 目标和518 零钱兑换 II322 零钱兑换416 分割等和子集(动态规划)、712 两个字符串的最小ASCII删除和583 两个字符串的删除操作1143 最长公共子序列673 最长递增子序列的个数931 下降路径最小和300 最长递增子序列];🟢[ 674 最长连续递增序列509 斐波那契数 ];🟣[ 42. 接雨水(单调栈、动态规划)、72 编辑距离(动态规划) ];🔵 [最短路径(Dijkstra、Bellman-Ford、SPFA、Floyd)和最小生成树(Kruskal、Prim)、强连通分量(Tarjan)]
🟠[ 698. 划分为k个相等的子集(记忆化搜索、状压dp)、];🟢[ ];🟣[ 51. N 皇后(回溯) ];🔵 [华为时习之 23. 代码缩进]
🟠[ 200. 岛屿数量1254. 统计封闭岛屿的数目(总数减去连通边缘的岛屿数,即问题200)、1020. 飞地的数量(计算封闭岛屿格子数)、695. 岛屿的最大面积1905. 统计子岛屿(这类题目注意dfs的完整性、先过滤不符合的岛屿) ];🟢[ ];🟣[ ];🔵[ 694. 不同岛屿的数量(plus题目) ]
🟠[ ];🟢[ ];🟣[ 37. 解数独 ];🔵[ 集合划分问题、排列组合问题、“岛屿”问题、数独问题 ]
子集/组合/排列(无重复不复选):🟠[ 78. 子集(回溯、位运算共 \(2^n\) 个子集)、77. 组合(转化为78.子集,第k层返回)| ];🟢[ ];🟣[ ]
共计68题。

2022年05月

题目编号
子集/组合/排列(重复元素不复选):🟠[ 90. 子集 II40. 组合总和 II(记得排序)、47. 全排列 II(组合总数,上面还有个全排列) ];🟢[ ];🟣[ ]
🟠[ 剑指 Offer 49. 丑数216. 组合总和 III39. 组合总和];🟢[ ];🟣[ ]
🟠[ ];🟢[ 剑指 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. 把字符串转换成整数(自动机)
==========剑指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 协议 ,转载请注明出处!