前言
2023年1月决定将力扣作为自己学习算法和数据结构的长期平台。9月20日左右,决定记录下来自己解决力扣编程题的过程(多半是山路十八弯、秃头、白了少年头的过程,菜菜菜!!!)。
这份学习日志争取做到以下三点(flag环节):
- 可能格式、形式比较随意,偏流水账,但保证日志内容的清晰准确
- 预计更新、维护2年时间(大三、大四)
- 希望能够完整记录与展现一位普通本科计算机专业学生的学习情况和学习过程,希望对读者有一定的参考价值
以上,完毕。
日志说明:
从今年9月开始,每个月会将自己的学习日志推送到GitHub仓库GitHub算法和数据结构学习日志,同时决定将每个月的学习日志发到各大有活力的互联网技术社区。
2023年12月算法和数据结构学习日志
12月1日 周五
- 2661. 找出叠涂元素,力扣每日一题,思路:
哈希
- 1617. 统计子树中城市之间最大距离,这道题弯弯绕绕了很久,尝试了几种思路,最后还是不对,不过即使最后没有AC这道题,在弯弯绕绕的过程中改进自己的思路也是有益的,思路:
树形DP
12月2日 周六
- 1094. 拼车,力扣每日一题,思路:
哈希
- LCR 003. 比特位计数,思路:
DP+位运算
- 1638. 统计只差一个字符的子串数目,要学会不断拆分问题,往前推进呀!!!思路是正确的,但是在思考状态转移时无法往前推进!!!
- 241. 为运算表达式设计优先级,优先想的应该是解决问题,而不是硬套模板,思路:
DFS暴搜或者区间DP
- LCR 020. 回文子串,回文子串的应用题,思路:
动态规划
- 1025. 除数博弈,一道看似复杂的问题,要学会复杂问题简单化!!!
- 1140. 石子游戏 II,这道题没有思路,决定先看题解,思路:
从后往前推的动态规划
,算法确实很灵活,这是一项大学期间值得学习的能力 - 1312. 让字符串成为回文串的最少插入次数,虽然标的是困难题,但是思路并不困难,思路:
区间DP
12月3日 周日
- 1423. 可获得的最大点数,又又又被大佬灵动简洁的思维秀翻啦!!!菜菜菜!!!思路:
枚举
或者转化思维+滑动窗口
- 1911. 最大子序列交替和,一道题目意思非常简洁的题,但是**俺不会做呀!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!**思路:
状态机DP
,啊啊啊!!!菜菜菜!!! - 2606. 找到最大开销的子字符串,重新思考这道题
- 2707. 字符串中的额外字符,重新思考这道题,这次思路与上次不同,上次是
动态规划
,这次是记忆化搜索
,体会手动档
和自动档
的区别与联系 - 2597. 美丽子集的数目,在持续推进展开自己的思路,虽然最后的时间性能不够优秀,但在允许的时间范围内解决了这道题!!!思路:
DFS+哈希
第374场力扣周赛复盘
一定是天气的原因,绝对不是因为我菜!!!
复盘完毕!!!Over !!!Over !!!
12月4日 周一
- 1038. 从二叉搜索树到更大和树,control C/V 过了这道每日一题,毕竟每天的10积分还是要白嫖滴
- 临近考试,疲于奔命,下号,下号!!!
12月5日 周二
- 2477. 到达首都的最少油耗,control C/V过了每日一题,就是要白嫖每天的10积分!!!
- 650. 只有两个键的键盘,很有意思的一道题,目前还没有思路,决定先不看题解,等有空的时候再继续思考这道题,下班,下班!!!
12月6日-12月8日
- 力扣日常每日一题,通过Control C/V 白嫖力扣每日的10积分,详情略
- 为什么这三天的详情略呢?唉😔,当代大学生面对期末考试的疲于奔命
12月9日 周六
- 2048. 下一个更大的数值平衡数,力扣每日一题,思路:
暴力枚举
或者打表+二分
参加力扣第119场双周赛,赛后复盘
事实证明,PVP终究还是自己与自己的较量。
人外有人,山外有山,天外有天的世界也很壮丽精彩。
会当凌绝顶,一览众山小是一种景色。
山外有山,天外有天也是一种不错的景色。
12月10日 周日
- 100140. 关闭分部的可行集合数目,昨晚的力扣第119场双周赛的t4,这道题虽然最后没有做出来,但是留给自己的启发是:
关注数据范围,通过数据范围展开自己的思路与尝试
,重点是:关注数据范围,足矣
参加力扣第375场周赛,赛后复盘
本场表现中规中矩,同时发现不必在意力扣竞赛一时的上分、掉分,只要实力提上去了,可以在某一场周赛或者双周赛中上一百分以上,从而满足一下分奴的小小愿望,所以既然难改分奴本色,就专注于在某一场周赛中上大分吧,这或许需要一些运气、一些临场发挥、但更多的是实力
12月11日 周一
- 1631. 最小体力消耗路径,力扣每日一题,一道
并查集
的好题,但是由于时间关系,决定先Control C/V
12月12日 周二
- 2454. 下一个更大元素 IV,力扣每日一题,一道很灵性的
单调栈应用题
,由于时间关系,看完题解后,选择了Control C/V
12月13日 周三
- 2697. 字典序最小回文串,力扣每日一题,再次思考这道题,发现自己的思路变得简洁了,即使是简单题,也可以锻炼自己简洁的思维
- 1031. 两个非重叠子数组的最大和,n=1000的数据量,自己用O(n^2)的时间性能解决了这道题,学习算法与数据结构最重要的培养分析问题的思维
- 1526. 形成目标数组的子数组最少增加次数,一道很有意思的题,噜啦啦!!!有手就行!!!思路:
线性DP
12月14日 周四
- 2132. 用邮票贴满网格图,力扣每日一题,读完题目后,暂时没有思路,由于时间关系,决定先Control C/V
12月15日 周五
- 2415. 反转二叉树的奇数层,力扣每日一题,思路:
BFS或DFS
,要进一步提高自己分析问题的能力呀!!!
12月16日 周六
- 2276. 统计区间中的整数数目,力扣每日一题,思路:
线段树
,由于线段树不在近期的学习计划内,所以决定Control C/V - 1595. 连通两组点的最小成本,一道自己觉得有思路的题目,但是已经wa了,没有发现bug所在,决定先放下这道题
- 1799. N 次操作后的最大分数和,由于数据量小,采用
DFS+记忆化搜索
的思路解决了这道题,学习算法重要的是提高自己分析问题的思维能力 - 1595. 连通两组点的最小成本,晚上再次思考这道题,尝试用暴力的思路解决问题,但是也发现了暴力思路的缺陷Bug所在,决定先不看题解,先把这道题存放在大脑中
12月17日 周日
- 力扣日常每日一题,详情略
参加力扣第376场周赛
本场周赛的表现比较平常,在保持参加力扣周赛的平常心,同时在进行有针对性的训练和长期目标
12月18日 周一
- 力扣日常每日一题,详情略
12月19日 周二
- 力扣日常每日一题,详情略
- 2967. 使数组成为等数数组的最小代价,第376场周赛t3,思路:
贪心+二分
,看完题解了解大致思路后,没有选择照着题解敲代码AC这道题,要有意识的培养自己算法学习过程中思维能力。 - 1388. 3n 块披萨,读完题后,思考了一些时间仍然没有思路,尝试了枚举思路,发现行不通,决定先放下这道题
12月 20日 周三
- 力扣日常每日一题 ,详情略
- 543. 二叉树的直径,重新思考这道题,被大佬的优雅代码惊艳到了
- 124. 二叉树中的最大路径和,解决了这道之前暂时放下的题,并没有想象中那么困难
- 2246. 相邻字符不同的最长路径,思路:
树形DP
,此题思路并不困难,只是有些细节困扰了自己很久,最后对着题解的代码找不同AC了这道题,菜菜菜!!!
12月21日 周四
- 力扣日常每日一题,详情略
- 687. 最长同值路径,思路:
树形DP
,看了题解后,对于题解代码有些地方还未理解,决定先放下这道题,其实就是因为菜 - 337. 打家劫舍 III,这道题看了一下思路,发现自己并没有理解,决定先不急于AC,决定先放下这道题
12月22日 周五
- 1671. 得到山形数组的最少删除次数,力扣日常每日一题,思路:
DP+转化思维
,克服了自己的畏难心理,独立AC了这道题!!!嘿嘿嘿!!!
12月23日 周六
- 1962. 移除石子使总数最小,力扣日常每日一题,思路:
堆(优先队列)
,噜啦啦!!!重拳出击!!!
参加第120场力扣双周赛
本场周赛的t4是一道递归题,虽然比赛的时候由于一些代码细节问题没有写出来菜菜菜,但是赛后找到了wa的原因,AC了这道题(要是早点发现Bug就好了嘞),菜菜菜!!!
12月24日 周日
- 1954. 收集足够苹果的最小花园周长,力扣日常每日一题,思路:
数学推导
或二分
,由于时间关系其实就是菜选择了Control C/V
参加第377场力扣周赛
这场周赛的t3是最短路(Floyd)+DP
,决定把最短路
列入近期的算法学习计划,啊啊啊!!!分奴太太太想上分啦!!!保持平常心,既然难改分奴本色,那就去争取上大分
,不用纠结于某一场竞赛积分的上下浮动。
12月25日 周一
- 1276. 不浪费原料的汉堡制作方案,力扣日常每日一题,思路:
二分
,拿下!!!拿下!!!
12月26日 周二
- 1349. 参加考试的最大学生数,力扣日常每日一题,首先尝试暴力DFS,然后,尝试记忆化搜索,最后尝试DP,看完题解后,发现思路是:
动态规划+状态压缩
,由于时间关系,其实就是菜,选择了Control C/V
12月27日 周三
- 2660. 保龄球游戏的获胜者,力扣日常每日一题,怎么这道题还能wa两发呀!!!菜菜菜!!!
12月28日 周四
- 1334. 阈值距离内邻居最少的城市,
最短路问题
,通过这道题,学习了Floyd
算法 - 2642. 设计可以求最短路径的图类,
最短路问题
,通过这道题系统学习了Dijkstra和Floyd算法
,了解了两个算法的应用场景和性能 - 2976. 转换字符串的最小成本 I,学习完最短路后,解决了这道题,思路:
最短路+DP
- 2735. 收集巧克力,力扣日常每日一题,很有启迪意义的一道题,本来以为是贪心,后来发现是
枚举
,学习算法和数据结构的过程中要有意识的提高自己的思维水平,培养分析问题的能力 - 2306. 公司命名,计划通过这道题学习状态压缩,然而…啊啊啊啊啊啊!!!!!!看了题解还是没看懂捏,由于时间关系(
其实就是菜),决定先放下这道题
12月29日 周五
- 2706. 购买两块巧克力,力扣日常每日一题,详情略
12月30日 周六
- 1185. 一周中的第几天,通过百度
文心一言
,调用Java相关API解决了这道题
12月31日 周日
- 1154. 一年中的第几天,力扣日常每日一题,
日期类
问题,用百度文心一言
调用Java日期相关API解决了这道题,文心一言,出击!!!
参加力扣第378场周赛
这是今年的最后一场周赛,总体而言,经过一年的努力与尝试,自己的算法水平有所进步,但依然有许多不足。新的一年,继续当力扣竞赛的分奴,同时,既然对于算法感兴趣,那就把算法学习做为一项长期爱好一直做下去吧。2023年,认识到了人外有人,山外有山,天外有天,这也是一项收获吧。