文章目录
- 每日一句正能量
- 前言
- 分享一道收藏的好题
- 分享一个收藏的便捷技巧
- 积灰这么久,这个当时被收藏的东西对现在的你还有用吗?
- 后记
每日一句正能量
很喜欢一个字,淡,平淡的淡,其实很不平淡,蕴含着很多人生哲理。淡是一种宁静,是明月松间照,清泉石上流的飘逸。早安!
前言
我们在日常生活中常常会遇到一些优秀的内容,比如文章、视频、图片、音乐等等,这些内容之所以被我们收藏下来,是因为它们曾经让我们感到心动、震撼或者启迪。但是,由于我们的关注点或者环境或者工作或者生活的不断变化,这些收藏品就很容易被遗忘在收藏夹里,成为了无人问津的“宝藏”。
但是,这些“宝藏”可不仅仅是一堆堆冷冰冰的网页链接,它们背后蕴藏的是我们曾经的情感共鸣,是我们曾经的智慧启示,更是我们曾经的宝贵财富。因此,今天让我们一起打开收藏夹,挖掘那些珍藏已久的宝藏,让它们再次闪光,带给更多人的共鸣和启迪。
作为程序员,我们在日常工作和学习中会接触到很多优秀的代码、技术和工具,这些东西对我们的工作和成长都有很大的帮助。然而,由于我们每天都在不断学习和接触新的东西,有些好东西就会被遗忘在收藏夹里,没有被充分利用。
今天,我想邀请大家一起来翻开收藏夹,重新回顾那些曾经让我们拍案叫绝的好东西。不论是一段神妙的代码,还是一篇洞见深刻的技术博客,或者是一款好用的开发工具,都可以在这个机会里得到更多的关注和分享,让我们的技术储备更加丰富、优秀。所以,让我们一起行动起来,分享和传播那些珍藏已久的宝藏,让它们发挥更大的价值和作用!
分享一道收藏的好题
我之前收藏的一道好题是 LeetCode 上的题目“二叉树的右视图”(Binary Tree Right Side View)。
当初我收藏这道题的原因是因为它具有以下优点:
-
基础题:这道题对于二叉树的基础操作有很好的考察。二叉树是算法中常见的数据结构,掌握好二叉树的操作对于进一步的算法学习有很大的帮助。
-
简单明了:这道题目的描述非常简单明了,题意清晰,让人可以快速理解题意。
-
有趣:这道题目并不是一个普通的遍历二叉树的操作,而是要求输出二叉树每层最右侧的节点。这个特质十分有趣,让我想要尝试解决。
而这道题在难度上并不高,因此我也没有太多的思考就选择了收藏,作为以后复习二叉树的一个练手题目。
对于这道题的解法,其实就是基于 BFS 的一种思路。我们可以将二叉树按照层级进行遍历,每次遍历完一层后,将该层最右侧的节点加入结果数组中。具体的代码实现,可以参考如下:
def rightSideView(self, root: TreeNode) -> List[int]:
if not root:
return []
result = []
queue = [root]
while queue:
size = len(queue)
for i in range(size):
node = queue.pop(0)
if i == size - 1:
result.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
return result
以上就是我收藏的这道二叉树的右视图题目。虽然难度不高,但是它对于二叉树的操作有很好的复习作用,也是一道很有趣的题目。
分享一个收藏的便捷技巧
我之前收藏的一个非常实用的技巧是 VS Code 中的多行编辑(Multi-Cursor Editing)。
多行编辑可以快速地对多处代码进行修改,而不是一个一个地进行修改。使用方法也非常简单,只需要同时按住“Ctrl”键和左键,即可在多处添加光标,然后操作的内容将同步进行修改,非常方便。
我为什么青睐这个技巧呢?首先,这个技巧非常方便,可以大大提高代码编辑的效率。在一些需要批量修改的场景下,比如修改相似的变量名,多行编辑能够轻松解决这个问题。其次,这个技巧功能强大,不仅支持在一行中添加多个光标,还支持在多个文件中进行操作,极大地方便了代码编辑。
除此之外,还有一些类似的技巧也非常值得收藏,比如 VS Code 中的多个光标,以及 Sublime Text 中的多行编辑模式。这些技巧在日常开发中非常实用,而且使用简单,因此我非常推荐大家收藏起来。
我之前收藏的一个技巧是针对算法题中的回溯算法。回溯算法是一种常用的解决问题的方法,但是在实现过程中,容易出现很多问题,比如回溯的顺序、回溯的条件、回溯的剪枝等等。我在学习回溯算法的时候,发现一个非常好用的技巧,那就是“画图+递归”。
具体来说,就是在回溯算法的实现过程中,先画出递归树,然后在递归树中展示回溯的过程,这样能够非常清晰地展示回溯的顺序、回溯的条件、回溯的剪枝等信息。
举个例子来说,在解决全排列问题的时候,我们可以使用递归树来画出全排列的过程。如下图所示,每一次递归都是在树的下一层进行的,展现了全排列问题的所有可能性:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pcpa07Wp-1689952201727)(https://raw.githubusercontent.com/yzyuan0506/MarkdownPhotos/master/Blog/p1.jpg)]
递归树的画法可以根据不同的问题进行调整,比如有些问题需要根据顺序进行回溯、有些问题需要进行剪枝等等,都可以在递归树中进行展示。我非常青睐这个技巧,因为它能够帮助我更加清晰地理解回溯算法的实现过程,优化解题思路,提高代码编写的效率。另外,这个技巧也非常好理解,适用于不同层次的开发人员。
我之前收藏的一个技巧是利用双指针法来解决一些字符串操作的问题,例如回文子串、最长回文子序列、最长公共前缀等问题。
这个技巧的核心思想是利用两个指针来遍历字符串,一般有两种方式:一种是使用两个指针分别从头和尾向中间移动,另一种是使用两个指针分别从同一个方向向中间移动。对于不同的问题,需要根据具体情况选择使用哪种方式。
以回文子串为例,使用双指针法来判断一个字符串是否为回文串,可以通过以下步骤实现:
- 使用两个指针 i 和 j,分别指向字符串的头和尾;
- 当 s[i] == s[j] 时,继续将 i 向前移动一位,将 j 向后移动一位;
- 当 s[i] != s[j] 时,说明该字符串不是回文串。
使用双指针法来解决字符串操作问题的好处是,在遍历字符串的过程中,可以减少一些不必要的计算,提高算法的效率。此外,这个技巧也有一定的考验能力的作用,因为需要根据不同的问题思考如何利用双指针来遍历字符串,并且需要对指针的移动进行合理的控制,避免出现错误的情况。
积灰这么久,这个当时被收藏的东西对现在的你还有用吗?
我收藏的技巧是利用双指针法来解决一些字符串操作问题的。现在看来,这个技巧仍然非常有用,因为对于字符串操作问题,利用双指针法可以提高程序的效率,减少不必要的计算,并且可以帮助我们更加清晰地思考问题。
在我最初收藏这个技巧的时候,主要是为了解决一些字符串操作问题,例如回文子串、最长回文子序列、最长公共前缀等问题。这些问题在我目前的工作中并不是非常常见,但是当我需要解决这些问题时,这个技巧就可以派上用场。
此外,这个技巧还可以帮助我们更加深入地理解双指针法的原理和应用场景,对我们的编程能力和算法思维也有一定的提升作用。
因此,尽管这个技巧积灰了一段时间,但我仍然认为它对我来说非常有用,并会在需要的时候继续使用它。
后记
收藏的东西都是有意义的,但随着时间的流逝,我们的需求和兴趣也可能会改变。因此,重新审视收藏品是很有必要的,这能够让我们更好地理解自己,知道什么对目前的生活和成长有帮助,什么则是多余的。重新思考当初收藏这个东西的原因,也能让我们更好地了解自己的需求和兴趣,从而更好地做出决策。
收藏只是开端,行动才是关键。以下是我收藏的一些好东西:
-
睡眠周期计算器(网站)
这个网站可以根据你的上床和起床时间计算出你的睡眠周期,以及建议你在什么时间入睡和醒来。我之前一直无法调整好自己的睡眠时长和质量,但使用了这个工具以后,我成功地将自己的睡眠优化起来了。 -
思维导图
我喜欢用思维导图整理自己的思路,尤其是在写作或做项目时。我曾经使用过一些思维导图工具,但最终选择了MindNode。它简单易用,功能强大,对提高我的工作效率和整理思路有很大帮助。 -
沉浸式阅读模式(浏览器插件)
这个浏览器插件可以去除文章中的干扰元素,让你更专注地阅读文章内容。我使用它的时候,可以很快地进入状态,理解文章的核心思想,并且减少了阅读时的疲劳感。
这些东西都是我在生活和工作中用到的,而且我相信它们对我未来的发展也会有所帮助。重新审视自己的收藏品,选择那些对自己有用的东西并行动起来,才能真正让收藏有所价值。
转载自:https://blog.csdn.net/u014727709/article/details/132031708
欢迎start,欢迎评论,欢迎指正