ARTS 第三周 6.8-6.14
Algorithm
仍在继续学习数据结构与算法中,个人觉得递归很有趣很神奇,此处将一道典型的递归题展示出来,
力扣22https://leetcode-cn.com/problems/generate-parentheses/
此题让我们列出所有合法的、不同组合的n对括号排列。
我一开始的思路是将n考虑成1和n-1两部分,这样就有三种组合:(n-1)、()n-1、n-1(),调试之后发现了这个思路的一个逻辑问题:只考虑了一种拆分情况,考虑不全,比如n=4时有(())(())这种情况,就无法被发现。
最后还是看了大佬们的答案,发现如下这种非常简便的解法,递归时考虑合法性,算是暴力法的一个优化。
其实还有一行两行的解法,不过相应的可读性会有所下降。
总之,递归的题目很有意思,并且大佬们的答案总是出奇的简洁,不禁让人膜拜。
Review
Why python is not the programming language of the future?
这篇文章分析了Python语言的特点及劣势,最后介绍了go、rust、julia几个弥补其劣势的新语言。Python向来以小巧、全面、易上手、高度发达的社区而闻名,但由于其设计原则所限,缺点也是显而易见的:
1)速度。由于Python需要保证每个变量只有一个数据类型,所以无法进行可能使其混乱的并行操作。这让Python花费的时间会比其他主流语言多数倍。
2)范围。Python是动态范围界定的,每个表达式需要在每个可能的上下文中进行测试,这使得Python执行变得繁琐。
3)空格。Python以空格和制表符分隔代码,这在大型工业级代码面前是不易维护的。
4)移动开发。Python在移动开发时较为困难。
……
虽然Python有很多缺陷,但由于其鲜明的特点与优势,仍然在蓬勃发展中;新兴的编程语言取代Python,还是一个较为长期的过程,我们可以持续关注。
Tips
在刷算法题的时候,发现了Python中逗号的一个小特点,觉得很有意思,可以在以后的coding中应用。
在一个字符串p后若加上逗号,则会以整体输出。
Share
这是耗子叔的文章,简洁清晰。表述了如何让学习知识的过程变得有趣、有效,并分享了一些技巧与原则。
有趣=熟悉+意外,若你觉得某事枯燥无聊,则有三种情况:熟悉但不意外,意外但不熟悉,陌生且不意外。在学习知识这一块,第一种情况属于碾压式学习,天天学1+1,任谁也不会觉得有趣;让小学生学非欧几何,虽然三角形内角和不是180让他意外,但仍感到非常陌生,就是第二种情况了;第三种情况类似于降维打击,就像我虽然不知道算命是怎么算的,但它肯定没什么用,没有任何意外可言。
所以,若想有趣地学习,既需要对所学内容有所熟悉,又需要一定程度的意外。这需要我们有很强的目标感,过程中如果有一些即时反馈就更好了。但我仍想说,无聊不可避免,与其一味地避免无聊,不如先接受它,与它和解。
学习是件反人类的事,我们需要刻意改变大脑思考习惯、奖惩机制,需要养成很多微习惯,这是一个与基因抗争的过程,是值得一直继续的征程,愿我们都有所收获。
评论