前言
2023年1月决定将力扣作为自己学习算法和数据结构的长期平台。9月20日左右,决定记录下来自己解决力扣编程题的过程(多半是山路十八弯、秃头、白了少年头的过程,菜菜菜!!!)。
这份学习日志争取做到以下三点(flag环节):
- 可能格式、形式比较随意,偏流水账,但保证日志内容的清晰准确
- 预计更新、维护2年时间(大三、大四)
- 希望能够完整记录与展现一位普通本科计算机专业学生的学习情况,学习过程,希望对读者有一定的参考价值
以上,完毕。
日志说明:
从今年9月开始,每个月会将自己的学习日志推送到GitHUb仓库GitHub算法和数据结构学习日志,最近几天看了几篇力扣社区的年终总结帖子,决定将Github仓库中的日志记录发到CSDN社区,10月、11月、12月的日志会在这几天发出。
2023年9月算法和数据结构学习日志
9月20日及之前
还没有产生写学习日志的想法,所以没有记录。
9月21日 周四
晚上,学习与思考日志
20:20开始思考力扣编程题
-
979. 在二叉树中分配硬币对于此题,自己没有思路,在题解区看到了
递归-贡献法
,将每枚硬币的移动次数转化为每条边的硬币经过数贡献法:路径是由边组成的,所有路径长度之和,等同于把「每条边出现在多少条路径中」相加,这种技巧叫做贡献法。
-
2681. 英雄的力量,阅读完题目后决定下班啦!!!开溜,开溜!!!先把这题放在脑子中吧
-
计划本周思考
贡献法
编程题
9月22日 周五
早上,学习与思考记录
- 2681. 英雄的力量自己写的暴力屎山思路又臭又长,还有逻辑上的bug,看大佬的题解将这题AC了。大佬的思路简洁优雅,对
贡献法
有深入的理解与运用,还有,怎么有的人模运算
写的又臭又长呀!!! - 907. 子数组的最小值之和,初看题目觉得有手就行,结果关于边界问题和确定区间内包含arr[i]的连续子数组个数,还有如何避免重复计算整麻啦!!!菜菜菜!!!看一眼题解:发现需要
贡献法
+单调栈
,于是决定先下班干饭!!!
中午,下午,学习与思考记录
-
907. 子数组的最小值之和干完饭后,决定再重新读一下题解,这道题还是要啃下来吧,磕磕绊绊,对着大佬的代码敲,也算是理解了这道题的解题思路
-
2281. 巫师的总力量和,看大佬的题解这道题的思路为
贡献法
+前缀和的前缀和
,其中前缀和的前缀和
公式推导部分未看懂,故决定这道题先暂时按下不写其实就是菜 -
贡献法
博客阅读 贡献法:一种数学思维,把要求所有方案数中每一个方案总和的总和 转换成每一个元素i的贡献值乘以总方案数的总和(算法之计算贡献 http://t.csdn.cn/2xSi3) -
1856. 子数组最小乘积的最大值独立AC了这道题,说明自己对于
贡献法+单调栈
的算法思维有了基本的理解与运用 -
891. 子序列宽度之和本题用贡献法`的思维解决非常巧妙,但是怎么有些菜鸡这都还要看题解写呀!!!菜菜菜!!!
注:强制类型转化的优先级高于四则运算 例如:(long) a+b,先将a转为long再进行+b运算
总结,下班
贡献法
是一种巧妙的转化问题的数学思维
贡献法:一种数学思维,把要求所有方案数中每一个方案总和的总和 转换成每一个元素i的贡献值乘以总方案数的总和
16:00下班
9月23日 周六
早上,学习与思考记录
- 2860. 让所有学生保持开心的分组方法数上周周赛(第363场周赛)的第2题。是一道排序的思维好题,能否看到看似复杂问题的简单、简洁本质是你需要培养的重要能力,也是你和编程高手的一大差距
- 2862. 完全子集的最大元素和上周周赛第4题,一道数学思维的好题,数学思维好差在解决这道题的表现判若云泥!!!
- 11:30下班!!!
9月24日 周日
周赛
10:30-12:00参加力扣周赛,解决了2题,以自己现阶段的实力确实不会这场周赛的t3、t4
9月26日 周二
随机一题
随机一题134. 加油站,半小时内没有思路,看看时间快5点啦,下班,干饭!!!
9月28日 周四
补题
14:30开始思考前几天未解决的编程题
-
134. 加油站,没有可行的解题思路,于是决定看题解,在一篇题解的评论区看到一种非常简洁优雅的解法,但是自己没有弄懂这种贪心思路为什么是正确的,决定暂时放下此题
其实就是菜 -
2866. 美丽塔 II,这是上周周赛遗留的题,决定读题解,思路是
单调栈+前缀和
,对于解题思路理解了,但依然有些代码上的细节不理解,对着大佬的代码敲了一遍然后提交了,太菜啦太菜啦,要学习大佬们分析问题的方法。
下班
16:45下班,干饭!!!