- 博客(20)
- 收藏
- 关注
原创 Coding | [代码随想录][动态规划] 122.买卖股票的最佳时机Ⅱ —— 从强行dp到对二维状态的理解
本文探讨了股票买卖问题的动态规划解法。作者通过分析发现,仅用时间维度无法确定状态,需要引入股票持有状态作为第二维度。由此构建了两种状态:dp[i][1](第i天持有股票)和dp[i][0](第i天未持有股票)。状态转移方程考虑了买入、卖出、持有股票未变动和未持有股票未变动四种情况,通过取最大值来保证状态的最优性。最终解法使用二维dp数组,初始化第一天状态后递推计算,返回最后一天未持有股票的最大利润。
2025-08-19 15:32:18
248
原创 Coding | [代码随想录][动态规划] 377.组合总和Ⅳ —— 爬楼梯是对的
本文探讨了LeetCode 377题"组合总和Ⅳ"的两种解法。该题要求从不同整数数组中找出总和等于目标值的元素排列组合数。作者首先尝试使用二维动态规划数组,发现递推公式不适用。后借鉴题解思路,将问题转化为"爬楼梯"问题,采用一维数组解法:dp[j]表示组成j的方案数,通过遍历nums数组更新dp[j] += dp[j-nums[i]]。该方法将时间复杂度优化至O(n*target),空间复杂度优化至O(target)。作者指出该问题本质是带约束的完全背包问题,与斐波那
2025-08-09 16:24:33
889
原创 Coding | [代码随想录][动态规划] 494.目标和
本文探讨了使用动态规划解决"目标和"问题的方法。通过分析问题,发现可以将目标表达式转换为类似0-1背包问题的子问题组合。文章详细描述了构建二维dp数组的思路,其中dp[i][j]表示前i个数组成j的方法数。在调试过程中,作者通过举例演算解决了初始化、边界设置和数组更新等关键问题。最终给出的解法时间复杂度为O(n*totalSum),空间复杂度相同。该解决方案通过动态规划有效计算了所有可能构成目标值的表达式数目。
2025-08-07 12:26:47
898
原创 Coding | [代码随想录][贪心] 968.监控二叉树
摘要:本文讨论二叉树节点监控问题,要求用最少的摄像头覆盖所有节点(每个摄像头可监控自身、父节点和子节点)。作者分析了初始思路的误区后,提出正确解法:采用后序遍历,将节点状态分为三类(有摄像头、被覆盖、无覆盖),自底向上递归处理。边界条件为空节点设为"被覆盖",最终检查根节点状态决定是否加装摄像头。该算法通过状态转移和边界控制,高效计算出最小摄像头数量。
2025-08-06 15:40:16
269
原创 Coding | [代码随想录][单调栈] 84.柱状图中的最大矩形面积
摘要:本文探讨了柱状图中最大矩形面积问题,提出基于单调栈的解决方案。通过分析,发现对于每个起始下标,其右侧第一个更小的柱子决定矩形边界。作者使用单调非增栈预处理每个柱子的下一个更小位置,然后遍历计算以每个柱子为高的最大矩形面积。经反复调试后实现O(n)时间复杂度的算法,成功通过测试用例(如输入[2,1,5,6,2,3]输出10)。该解法有效利用了单调栈性质,将问题转化为寻找边界极值的过程。
2025-08-03 20:50:46
181
原创 Coding | [代码随想录][回溯] 332.重新安排行程
摘要:文章讨论了如何重新规划机票行程的问题,要求从JFK机场出发并按字典序返回最小行程组合。作者通过回溯算法构建起点到终点的映射关系,但在修改全局变量时遇到问题。关键点包括:1)使用map实现自动排序;2)注意引用传递避免数据拷贝;3)通过bool返回值实现提前终止。最后作者反思了C++语法细节的重要性,并提及了为考核准备的训练计划。(150字)
2025-08-03 14:51:40
406
原创 Coding | [代码随想录][二叉树] 112.路径总和
给你二叉树的根节点root和一个表示目标和的整数targetSum。判断该树中是否存在的路径,这条路径上所有节点值相加等于目标和targetSum。如果存在,返回true;否则,返回false。是指没有子节点的节点。
2025-04-03 23:24:40
236
原创 Coding | [代码随想录][栈和队列] 347.前K个高频元素——从大小顶堆、优先级队列到operator关键字重载
给定一个非空的整数数组,返回其中出现频率前 k 高的元素。
2025-03-28 15:11:26
392
原创 Coding | [代码随想录][哈希表] 454.四数相加
分析一下,其实思路大差不差,就在于用的数据结构不一样。map这个数据结构相当于把一维数据展成二维数据了(unordered_multiset<value>->unordered_map<value, count>)。将key值直接用num1+num2指示,很艺术。并且时间复杂度也降下来了。我觉得这应该归结于在无需占用其他空间的情况下,快速记录下value和count二维数据的原因。
2025-03-08 23:00:59
454
原创 Coding | [代码随想录][哈希表] 202.快乐数
当看到思路解答中将“无限循环”这个拿出来狠狠拆解分析的时候我惊掉下巴了,确实,在有限个数字的情况下,达到无限的循环肯定会在中间出现重复的元素/数字。换句话,也是换个视角来说,只要第一次出现了重复元素并且该元素不是1,那么一定会重蹈覆辙:再也回不到1了。所以只需要检查“第一次发生元素重复的元素是不是'1'”就可以了。而这道题的哈希思想就只用在了集合检查元素重复项这一点上。
2025-03-08 20:29:05
305
原创 Coding | [代码随想录][数组] 58.区间和 44.开发商购买土地
代码随想录 58.区间和难以接受的是这本应该在大一大二就逐渐经历的coding & debugging经历我居然到大三下才接触到。真是羞耻
2025-03-01 14:07:01
330
原创 DB_exp | NWPU 头歌数据库原理实验 JDBC 银行场景化综合应用实验
这几道题都比较鬼火冒,因为题目当中并没有给出相关的表列信息,直接写是写不了的。需要在实验环境中找到数据库文件路径,连接之后再看表列信息。
2024-11-14 11:10:38
370
原创 Latex | 明明这一页有位置,但表格到了下一页?默认设置出问题了
今天用latex编写一个文档的时候突然发现明明这一页有位置,但是我的第四个表格就是会到下一页去。稍微调试了一下发现好像和表格本身性质无关,更像是限制了一页里面的表格数量,但是在csdn里查不到相关博文,在解决此问题之后前来补充。原来是包本身会有对一页内浮动体个数的限制,默认个数是3个,所以会出现无论如何第4个表格都会出现在下一页的情况发生。通过上述代码调整允许阈值之后即可解决问题。
2024-11-11 16:50:58
2086
原创 DS Lab | NWPU 头歌1-1 合并有序数组
嘟嘟嘟嘟又有问题啦:我最开始是用的指针定义seqlist *L;但是却没有为指针分配内存空间。我这脑袋瓜又有问题了,为什么在merge函数里面的定义就不用分配空间呢?是因为形参和实参的区别吗?那为什么有一定要分配内存空间呢?像int、float、char这样的变量声明也没有给变量分配空间啊……
2024-03-24 16:41:49
502
原创 Alg | NWPU 头歌1-1 二分查找
而我,把这俩给混在一起了,又用while又函数嵌套......菜就多练。一个这么简单的代码居然掰扯了好久,分析判断了好一会才发现了问题所在。要么就用while语句循环,并不断更新start和end的值。要么就这么写,用if判断一下还能不能再往下走;说实话感觉前者更加符合递归分治的定义。
2023-12-02 19:38:34
533
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1