代码随想录刷LeetCode | 训练营周总结(二)

目录

刷题流程复盘

存在的问题:

阅读感悟关联刷LeetCode

知行合一


前沿:撰写博客的目的是为了再刷时回顾进一步完善,其次才是以教为学,所以如果有些博客写的较简陋,是为了保持进度不得已而为之,还请大家多多见谅。

预:看到题目后的思路和实现的代码。

见:参考答案展示。

感思:对比答案后的思考,与之前做过的题目是否有关联。

行:

(1)对于没做出来的题目,阅读答案后重新做一遍;

(2)下次做题可以尝试改善的方向;

(3)有助于理解的相关的题目

一刷优先级:做题进度>学习&总结>默写回顾>做题数量

刷题流程复盘

预:

之前的输出做法虽然能够将博客做的精致但耗时和较为轻松,做出来文章篇幅很长也会相对有成就感。但实际上无法验证我对题目的掌握程度

然后现阶段我还在一刷能力不足时间紧凑,所以目标优先级为:思路>实现。

为此上次总结决定这周开始每日的输出是对昨日刷题的思路默写,像之前的输出的过程更多的是对着答案将笔记补完所以这周侧重每天通过默写输出,回顾和巩固昨日的掌握情况。

其次,为了二刷和昨日回顾有侧重点,每天刷完题都会用不同颜色标注刷过题目的重要性;每次只侧重先复习“未实现重要”,有时间再复习已经掌握的。 

最后,每天晚上做好预准备(提问、 Excel表、时间规划、博客、打卡),即无需状态好也能提前准备好的事宜,便于第二天一起来就能够直接做重要的事情。

执行一周暂未感觉有啥弊端,并且感觉比每天将昨日全部题都回顾轻松很多。

存在的问题:

容易上头:有时候做不出来,但总感觉自己能想出来,就会时间到了,仍然选择继续闭门造车。

阅读感悟关联刷LeetCode

阅读完马上做其他事情,大部分情况下都不会再阅读同一本书。

看完剧也是马上开始看下一部剧,做题目也是做完就赶紧溜之大吉,巴不得再也不做了。

  • 会有这样的举动,更多地是因为想要获得做/看完后的成就感,即“做/看完=拥有”

上午遇到难题做到头都转不动了,便感觉到焦虑和沮丧。

  • 但客观上来说,目前我做题的目的不就是为了查漏补缺,发现不会的不是应该开心?

    • 因为只有遇到不会的题目,才有机会扩展能力圈,尽可能地掌握它,做好标识以后重点做它

  • 难道不是希望能够持续做有关联的事情吗?只有这样才能熟能生巧,成为某一领域的专家。

虽然看完一部动漫再看下一部很爽,但与阅读和学习相同的是:过段时间就忘的一干二净了。

  • 质量>数量

    • 阅读100本书,若一本都没有掌握,那阅读100本书也意义不大,所以不能盲目追求数量

  • 深度>速度

    • 1小时做完十道题,若没有掌握or只是粗浅了解是没有意义的,因为过几天可能一道题都做不出来。

    • 既要限时保证做题的专注度和避免钻牛角尖,也要留出充分地时间学习总结。

      • 模拟做题,而不是限时做一道题对一道答案

 当时间不够时,选择保持进度,还是学习总结?

  • 在一刷阶段:保持进度>学习总结,因为后面还有第二阶段

  • 一刷的目标是保持整体进度,尽可能掌握一种实现方法,标注题目。

    • 将做过的题目标注出重点、难点和较不重要。

  • 二刷时,先做重点、再大量时间攻克难点、最后才是较不重要、又早已掌握的简单题目。

如何解决做完就忘的问题?

  • 答案不就是忘了就再做哈哈哈。

  • “做完!=掌握”,所以需要检验自己是否真正的掌握,并对于难题重点回顾(先回顾难题)。

  • 若是遇到快速做完且做对的情况,则第二天不需要花太多时间复习。

用自己的语言默写定义学过的内容,并尝试用熟悉的事务去解释,这样学习才是最高效的。

  • 用熟悉的事务与新学的内容构建联系,相对于在已经掌握的内容上叠加;不仅对熟悉的事务进行的复习,同时还构建了属于自己的体系。

  • 站在计算机专业的角度,学习相当于读入,用熟悉事务去解释相当于编码,只要编码得当,以后调用就会高效。

一刷代码随想录做题过程:

默写昨日重要题思路输出→做新题→理解新题→标识题目难易程度→默写昨日难题思路输出(选做)

二刷代码随想录做题过程:

默写昨日难题思路输出(必做)→做今日标识难题题目→做今日标识重要题目→更新题目难易程度→默写昨日剩余题思路输出(选做)

知行合一

不复盘找各种题目间的区别与联系,基本和没做没什么区别,毕竟面向找工作学习,不寒掺。——星球某大佬语录

题目间总结:要专门花时间对同一章节题目做总结,再对有相关的章节间做总结,寻找题目间的关系,建立自己的算法体系。

预:看题目默写思路,凭所学归类。

见思:对照着代码随想录等总结归类

行:总结这次知识复盘的流程存在的问题,为下次知识复盘做出可行的方案

第一次周全勤输出刷题默写记录一下!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
第二十二天的算法训练主要涵盖了Leetcode题目中的三道题目,分别是Leetcode 28 "Find the Index of the First Occurrence in a String",Leetcode 977 "有序数组的平方",和Leetcode 209 "长度最小的子数组"。 首先是Leetcode 28题,题目要求在给定的字符串中找到第一个出现的字符的索引。思路是使用双指针来遍历字符串,一个指向字符串的开头,另一个指向字符串的结尾。通过比较两个指针所指向的字符是否相等来判断是否找到了第一个出现的字符。具体实现的代码如下: ```python def findIndex(self, s: str) -> int: left = 0 right = len(s) - 1 while left <= right: if s[left == s[right]: return left left += 1 right -= 1 return -1 ``` 接下来是Leetcode 977题,题目要求对给定的有序数组中的元素进行平方,并按照非递减的顺序返回结果。这里由于数组已经是有序的,所以可以使用双指针的方法来解决问题。一个指针指向数组的开头,另一个指针指向数组的末尾。通过比较两个指针所指向的元素的绝对值的大小来确定哪个元素的平方应该放在结果数组的末尾。具体实现的代码如下: ```python def sortedSquares(self, nums: List[int]) -> List[int]: left = 0 right = len(nums) - 1 ans = [] while left <= right: if abs(nums[left]) >= abs(nums[right]): ans.append(nums[left ** 2) left += 1 else: ans.append(nums[right ** 2) right -= 1 return ans[::-1] ``` 最后是Leetcode 209题,题目要求在给定的数组中找到长度最小的子数组,使得子数组的和大于等于给定的目标值。这里可以使用滑动窗口的方法来解决问题。使用两个指针来表示滑动窗口的左边界和右边界,通过移动指针来调整滑动窗口的大小,使得滑动窗口中的元素的和满足题目要求。具体实现的代码如下: ```python def minSubArrayLen(self, target: int, nums: List[int]) -> int: left = 0 right = 0 ans = float('inf') total = 0 while right < len(nums): total += nums[right] while total >= target: ans = min(ans, right - left + 1) total -= nums[left] left += 1 right += 1 return ans if ans != float('inf') else 0 ``` 以上就是第二十二天的算法训练的内容。通过这些题目的练习,可以提升对双指针和滑动窗口等算法的理解和应用能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值