- 博客(39)
- 收藏
- 关注
原创 【c++刷题笔记-动态规划】day43: 300.最长递增子序列 、 674. 最长连续递增序列、 718. 最长重复子数组
子序列和子数组问题,使用以i-1为结尾统计每一个最大值。
2024-07-18 12:28:21
69
原创 【c++刷题笔记-动态规划】day42:188. 买卖股票的最佳时机 IV、309. 买卖股票的最佳时机含冷冻期、714. 买卖股票的最佳时机含手续费
股票问题,分清楚状态就很容易做了。持有状态分为前几天一直持有的状态、前几天不持有今天买入的状态。不持有状态分为前几天一直不持有状态,前几天持有今天卖出状态。
2024-07-18 11:27:11
83
原创 【c++刷题笔记-动态规划】day41: 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II 、
两个状态,持有和不持有。持有是前几天买入没有卖出的状态和今天刚刚买入的状态。不持有是前几天卖出和今天卖出的状态。dp数组初始化第一天持有就一定是第一天买入的。今天依赖前几天的状态取最大值。
2024-07-16 22:41:37
307
原创 【c++刷题笔记-动态规划】day40: 198.打家劫舍 、 213.打家劫舍II 、 337.打家劫舍III
打家劫舍问题有俩个状态,偷和不偷。依赖前两个状态。遇到循环问题分为两种情况讨论,[0,n-2],[1,n-1]。树形dp使用长度为2的数组,下标0表示不偷,下标1表示偷。利用这两个状态进行推导。
2024-07-15 11:51:18
294
原创 【c++刷题笔记-动态规划】day38: 322. 零钱兑换 、 279.完全平方数 、139.单词拆分
遇到求数量题可以尝试使用递推公式为dp[j-weight[i]]+1。
2024-07-14 17:29:22
169
原创 【c++刷题笔记-动态规划】day37:完全背包理论基础、518.零钱兑换II、377. 组合总和 Ⅳ、卡码网:57. 爬楼梯
完全背包,先遍历物品再遍历背包是求组合数,先遍历背包再遍历物品是求排列数。求组合的个数使用dp[j]+=dp[j-nums[i]];
2024-07-12 13:30:03
311
原创 【c++刷题笔记-动态规划】day36:1049. 最后一块石头的重量 II 、 494. 目标和 、 474.一和零
需要掌握技巧,抽象出背包问题,还有解决多维度的背包的情况。
2024-07-11 11:17:29
231
原创 【c++刷题笔记-动态规划】day33: 62.不同路径 、 63. 不同路径 II 、343. 整数拆分 、96.不同的二叉搜索树
动态规划是由多个重复的子问题组成,如何解决这些子问题就是思考的方向。分析出递推公式和初始化dp数组以及确定遍历顺序。
2024-07-09 10:47:44
315
原创 【c++刷题笔记-动态规划】day32: 509. 斐波那契数 、 70. 爬楼梯 、 746. 使用最小花费爬楼梯
理解dp数组的定义,它代表什么很重要。初始化,需要考虑清楚。递推公式需要理解。
2024-07-08 12:07:11
183
原创 【c++刷题笔记-贪心】day30:56. 合并区间 、 738.单调递增的数字
贪心算法,需要一定的技巧,覆盖区间可以直接用back()函数修改右边界。修改数字可以使用flag来记录需要修改的数字的下标。
2024-07-06 15:19:19
215
原创 【c++刷题笔记-数组】day29:452. 用最少数量的箭引爆气球、 435. 无重叠区间 、 763.划分字母区间
区间覆盖问题,先排序,判断好边界。
2024-07-05 17:07:03
300
原创 【c++刷题笔记-贪心】day28: 134. 加油站 、 135. 分发糖果 、860.柠檬水找零 、 406.根据身高重建队列
贪心就是以局部推全局并且没有反例的情况,当遇到不同维度的贪心时,需要分开讨论。
2024-07-05 15:04:01
381
原创 【c++刷题笔记-贪心】day27: 122.买卖股票的最佳时机II 、 55. 跳跃游戏 、 45.跳跃游戏II 、 1005.K次取反后最大化的数组和
贪心没有规律。需要总结,从局部最优推到全局最优。
2024-07-03 14:17:06
191
原创 【c++刷题笔记-贪心】day26:455.分发饼干 、376. 摆动序列 、53. 最大子序和
贪心题就是需要总结,以小见大。通过局部最优判断出整体最优。
2024-07-02 11:21:38
128
原创 【c++刷题笔记-回溯】day25:491.递增子序列 、46.全排列 、47.全排列 II、332.重新安排行程、51.N皇后
回溯去重逻辑需要记清楚,分解大问题为小问题,然后依次解决。回溯不清楚一定要画图理解。
2024-07-01 13:37:10
191
原创 【c++刷题笔记-回溯】day24:93.复原IP地址 、 78.子集 、 90.子集II
需要在字符串中加入同一个字符时,使用添加的字符做标记进行分割。子集问题在每次递归开始时统计。去重使用树枝和树层去重逻辑,前一个标记为false时表示是回溯回来的表示在同一层,所以需要去重。
2024-06-29 12:01:52
147
原创 【c++刷题笔记-回溯】day22: 77. 组合 、 216.组合总和III 、 17.电话号码的字母组合
利用好回溯模板,注意结束条件和选择对象。将选取的对象抽象为树结构,画图出来判断出递归的条件。
2024-06-27 11:17:13
190
原创 【c++刷题笔记-二叉树】day21: 669. 修剪二叉搜索树 、108.将有序数组转换为二叉搜索树 、 538.把二叉搜索树转换为累加树
建树和修改树,可以考虑使用左右子树接受递归的值,达到删除和修改的要求。
2024-06-26 16:20:44
132
原创 【c++刷题笔记-二叉树】day20: 235. 二叉搜索树的最近公共祖先 、 701.二叉搜索树中的插入操作 、 450.删除二叉搜索树中的节点
利用好二叉搜索树的特性,二叉树插入的时候只需要在空结点处插入,二叉树搜索删除操作需要判断是否为最左子树。
2024-06-25 11:45:28
196
原创 【c++刷题笔记-二叉树】day18: 530.二叉搜索树的最小绝对差 、 501.二叉搜索树中的众数 、 236. 二叉树的最近公共祖先
可以用额外结点来接收前一个结点。统计结点频率可以使用一边统计一边更新的方式。把问题划分为多个子问题,在一对一解决。
2024-06-24 12:48:35
117
原创 【java开发笔记】RabbitMQ--超时队列和死信队列
死信队列(Dead Letter Queue, DLQ)是一种特殊的消息队列,用于存储无法被正常消费的消息。超时队列是一种用于处理需要在指定时间内被处理的消息队列。如果消息在设定的时间内没有被消费,则会被视为超时消息。
2024-06-23 15:48:51
429
原创 【c++刷题笔记-二叉树】day17: 654.最大二叉树 、 617.合并二叉树 、 700.二叉搜索树中的搜索 、 98.验证二叉搜索树
递归需要做好终止条件和边界条件,合并二叉树需要使用辅助结点来接收值,二叉搜索树的特性是按照中序遍历它的值是有序的。
2024-06-23 13:49:25
124
原创 【c++刷题笔记-二叉树】day15: 110.平衡二叉树 、257. 二叉树的所有路径 、 404.左叶子之和、 222.完全二叉树的节点个数
后序遍历求高度,前序遍历求深度,ans+sumOfLeftLeaves(root->left)+sumOfLeftLeaves(root->right);统计结点的逻辑。
2024-06-20 22:31:59
327
原创 【c++刷题笔记-二叉树】day14: 226.翻转二叉树、 101. 对称二叉树 、 104.二叉树的最大深度、 111.二叉树的最小深度
学会使用二叉树的遍历方式,了解深度和高度的区别,根节点到叶子节点的距离为深度,高度是从叶节点数到它的根节点。
2024-06-19 21:10:53
176
原创 【c++刷题笔记-二叉树】day13: 二叉树递归遍历、二叉树 迭代遍历 、二叉树层序遍历
二叉树的遍历需要弄清楚,迭代遍历需要栈来模拟,层序遍历需要队列来模拟。
2024-06-19 20:32:33
107
原创 【c++刷题笔记-栈和队列】day12: 150. 逆波兰表达式求值 、239. 滑动窗口最大值 、 347.前 K 个高频元素
掌握栈和队列的使用,双端队列的特性和优先队列的特性要弄清楚。
2024-06-17 12:53:27
204
原创 【c++刷题笔记-栈和队列】day10: 232.用栈实现队列 、225. 用队列实现栈 、20. 有效的括号 、 1047. 删除字符串中的所有相邻重复项
栈是先进后出的线性结构,队列是先进先出的线性结构。两两匹配考虑使用栈。
2024-06-15 16:33:36
173
原创 【c++刷题笔记-字符串】day09: 151.翻转字符串里的单词 、卡码网:55.右旋转字符串 、28. 实现 strStr() 、 459.重复的子字符串
掌握字符串反转技巧,重复字符串可以通过s+s进行拼接,如果中间存在s作为s+s的字串则表明改字符串s有重复的子字符串。匹配字符串优先考虑kmp算法,理解kmp算法,先理解next数组,然后再理解的背一个模板,多用几次就熟悉了。
2024-06-14 21:15:02
164
原创 【c++刷题笔记-字符串】day8: 344.反转字符串 、 541. 反转字符串II、 卡码网:54.替换数字
字符串问题多使用双指针法,找准遍历区间很重要。
2024-06-14 17:53:12
215
原创 【c++刷题笔记-哈希表】day6:454.四数相加II , 383. 赎金信 , 15. 三数之和 ,18. 四数之和
哈希表能很好的解决数组元素匹配的问题发现类似的题目时可以优先考虑哈希表,遇见数组需要求匹配值且改变数组不影响后续操作的时候,优先考虑将数组进行排序和利用双指针进行求解。
2024-06-12 16:51:31
131
原创 【c++刷题笔记-哈希表】day06: 242.有效的字母异位词 , 349. 两个数组的交集 , 202. 快乐数 , 1. 两数之和
初学哈希表,哈希表多用在去重,找对应的数。unoreder_map是以键值对的形式存储,unordered_set是一个集合只能存放键。
2024-06-11 21:13:48
210
原创 【c++刷题笔记-链表】day04:24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点 、 面试题 02.07. 链表相交 、 142.环形链表II
多使用哨兵结点,这样指针指向会比较清晰,也会方便操作指针。快慢指针技巧,链表有环和求相同的结点的时候可以考虑快慢指针。
2024-06-10 17:24:01
291
原创 【c++刷题笔记-链表】day03: leetcode203.移除链表元素 , leetcode707.设计链表 , leetcode206.反转链表
链表基本都可以用虚拟头节点,所以要善用虚拟头结点。链表问题需要定义一个临时节点,尽量不要在原始节点进行操作。需要梳理好指针方向,保存下一个待操作的节点,可以把这个节点当成一个新的链表的头结点使用。
2024-06-09 22:37:18
140
原创 【c++刷题笔记-数组】day02:leetcode977. 有序数组的平方、leetcode 209.长度最小的子数组、leetcode 59.螺旋矩阵II
数组写代码的结构很重要,先找出边界,选好遍历方式想清楚再动手。
2024-06-07 12:05:16
241
原创 【c++刷题笔记-数组】day01:leetcode704. 二分查找、leetcode27. 移除元素
原地移动数组,易错点在双指针从左向右遍历的时候与后面位置交换的时候记得回退指针,指针重合后就结束循环。最基础的写法,适合没有重复数据的数组左闭右闭[l,r]左闭右开区间[l,r),那边开就往哪边收缩。
2024-06-06 21:09:48
180
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人