自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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++刷题笔记-动态规划】day34:01背包问题 二维 、 01背包问题 一维 、416. 分割等和子集

了解背包dp的使用方法和技巧。

2024-07-10 11:10:26 238

原创 【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++刷题笔记-回溯】day23: 39. 组合总和 、40.组合总和II 、 131.分割回文串

选好递归终止条件,了解同一树层和同一树枝。

2024-06-28 15:04:09 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++刷题总结】数组和链表

1、704. 二分查找。2、27. 移除元素。

2024-06-23 13:54:06 90

原创 【c++刷题笔记-二叉树】day17: 654.最大二叉树 、 617.合并二叉树 、 700.二叉搜索树中的搜索 、 98.验证二叉搜索树

递归需要做好终止条件和边界条件,合并二叉树需要使用辅助结点来接收值,二叉搜索树的特性是按照中序遍历它的值是有序的。

2024-06-23 13:49:25 124

原创 【c++刷题笔记-二叉树】day16: 路径总和 、 从中序与后序遍历序列构造二叉树

理解递归的回溯逻辑,以及用全局变量来接受每次回溯的结果。

2024-06-22 15:38:34 139

原创 【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关注的人

提示
确定要删除当前文章?
取消 删除