ARTS 第 14 周
每周完成一个 ARTS:
Algorithm: 每周至少做一个 LeetCode 的算法题
Review: 阅读并点评至少一篇英文技术文章
Tips: 学习至少一个技术技巧
Share: 分享一篇有观点和思考的技术文章
Contents:
- Algorithm: 20. Valid Parenthese
- Review: Predicting Stock Price with LSTM
- Tip: 几种查询 API 文档的方式
- Share: 关于健身的一些常识和误区
Algorithm
20. Valid Parenthese
题目:20. Valid Parenthese
难度:Easy
题意:给定一个只包括 )
,)
,{
,}
,[
,]
的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
示例 2:
Input: "()[]{}"
Output: true
示例 3:
Input: "(]"
Output: false
示例 4:
Input: "([)]"
Output: false
示例 5:
Input: "{[]}"
Output: true
解法:
本题解法参考了B站up主 Michelle 小梦想家 的这个视频。
栈这一数据结构非常适合在本题中使用,同时对于匹配问题,使用查找表找出每个左括号对应的右括号也是很好的思路。
首先我们创建一个空的栈 stack
,再创建一个对应括号的查找表如下:
lookup = {'(': ')', '[': ']', '{': '}'}
然后对给定的字符串按位进行读取:
- 如果读取到的括号在查找表中,那么说明是左括号,将其入栈;
- 如果读取到的括号不在查找表中,那么说明是右括号,我们将栈顶的括号出栈,并在查找表中进行查找,再与读取到的括号进行对比,如果相同,那么说明匹配完毕,如果不同,那么说明匹配已经出错,返回 False;
- 另外还有一种情况,就是如果第一个读取到的括号为
)
、]
、}
这种右括号,此时 stack
为空,那么应该直接返回 False,所以在这里也加上一个条件 if len(stack) == 0
; - 最后应该判断输入的字符串是否为空字符串,如果是,那么也认为是有效的。
代码如下:
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
stack = []
lookup = {'(': ')', '[': ']', '{': '}'}
for each in s:
if each in lookup:
stack.append(each)
elif len(stack) == 0 or lookup[stack.pop()] != each:
return False
return len(stack) == 0
时间复杂度 O(n),空间复杂度 O(1)。
Review
Predicting Stock Price with LSTM
这周阅读了 Medium 上 TowardsDataScience 推送的一篇文章 《Predicting Stock Price with LSTM》。在这篇文章中,作者详细介绍了他是如何使用 LSTM(长短期记忆网络)来预测通用公司的股票价格的过程。步骤如下:
- 读取与分析数据(Pandas)
- 数据归一化(SkLearn)
- 将数据转换成时间序列和监督学习问题
- 建立模型(Keras)
- 模型微调(这个系列的下一篇文章)
- 训练、预测与可视化结果
- 作者认为有用的技巧&工具(这个系列的最新文章)
文章讲述比较详细,并给出了代码,作者为这个项目写了一系列的文章,具体可以参考这里。
Tips
几种查询 API 文档的方式
常用的几种查询 API 文档的方式:
- Pycharm 中的 ⌘-B 可以跳转到定义
- IPython 中在函数后加上问号(?)可以查询该函数的定义
- Mac 上的 Dash,Windows 和 Linux 上的 Zeal,在线版的 https://devdocs.io/
Share
关于健身的一些常识和误区
最近看完了斌卡的《硬派健身》,对于我这样的健身小白来说,的确起到了很好的扫盲作用,大致上明白了健身的一些常识和误区,其实自己也不算行家,暂且列下几点,算是总结:
- 健身的目的,对于我来说,不仅在于拥有健康的体魄,更是一种生活中的减压方式,也是向内寻找自己的一种方式,发现囿于日常生活中的自己,并跳出来;
- 好身材就是瘦且有型——大肌群是最重要的:胸背臀腿。并且训练大肌群会促进合成生长激素与睾酮,减脂效果更好。我健身以来,基本上没有做过有氧,只做大肌群的力量训练,除了胸围臂围长了一点意外,体重从健身之前的 70 kg 减少到了现在的 67 kg;
- 节食减肥不可取,不仅会导致暴食让你吃得更多,而且这种方式减肥极其容易反弹,因为自然选择让我们成为那些「狂吃不止囤积脂肪挨过饥荒」的猴子🐒的后代;
- 有氧运动消耗的总热量和脂肪,要少于同等时间长度的高强度无氧阻抗训练和 HIIT 训练,且对于体重正常的人来说,有氧效果很差,对于超重者,有氧运动反而会因为脂肪和关节的共振导致损伤;
- 强推 HIIT;
- 健身之后肌肉酸痛,学名叫「延迟性肌肉疼痛 DOMS」,与肌肉纤维断裂和肌肉组织受损有关,是正常现象,在酸痛已经出现的情况下,继续运动能促进肌肉内血液循环加速,可以有效缓解当前的疼痛感;
- 下班之后很累,其实是由于神经系统紧张以及长时间从事单调的工作而产生的主观疲劳,这种疲劳是可以通过适当的运动来缓解的,运动会比同样条件下听音乐起到更好的缓解疲劳、集中注意力的的效果;
- 空腹训练更能消耗脂肪,但有限脑血管疾病的人要尽量避免做空腹训练,一般空腹训练前一定要多喝水;
- 对于大多数人来说,健身房训练都是要好过无器械健身即自重训练的,健身房的器械具有自重训练没有的安全、可控和针对性;
- 骑车训练对于减肥来说,在热量消耗、脂肪氧化率和脂肪供能比例等方面远远不如跑步,并且跑步的减肥作用可以随着身体水平的提高而提高,但是骑车也有不容易伤到关节和身体等优势;
- 关于关节异响,只要符合这几种情况,即可判断为生理性异响,并无大碍:只在关节运动时响、响的时候没有特别疼痛不适的感觉。但如果不符合,那么最好去医院检查;
- 对于普通人来说,深蹲训练不仅不会增加膝盖受伤的概率,反而因为能提高肌肉质量、改善关节周围组织功能,而对关节疼痛和炎症起到缓解作用,另外深蹲还能增加与保持骨密度,防止骨质疏松;
- 训练前拉伸会影响肌肉的最大力量,消除肌肉的自我保护机制而导致容易受伤,不应作为热身选择,而训练后拉伸则能大大改善身体的柔韧度、增加力量,减少受伤概率(作者建议使用 PNF 拉伸法);
- 念动合一:在训练时将全部注意力集中到训练部位,能够提升训练效果,而且这不是什么迷信;
- 减脂与增肌可以同时进行,至少正确的运动塑身(抗阻+有氧)就是同时进行减脂和增肌的;
- 健身房的选择:位置、器械数量种类和功能、饮水机、洗澡、清洁、空气状况、泳池等;
- 食物的血糖生成指数——GI 值是一个非常值得参考的指标,简单来说,高 GI 值的食物吃下去容易被存储为脂肪,以及容易饿,具体与胰岛素的水平和分泌有关,这里不展开说,结论是,日常生活中可以多吃低 GI 食物,少吃高 GI 食物,但是运动之后多吃高 GI 食物可以更好地促进身体的吸收和恢复;
- 高蛋白饮食可以促进减脂,对维持体重、防止反弹也有很好的效果,因为吃下去的蛋白质其实不是能全部被消化吸收,消化不掉的会变成尿素排出体外,不像脂肪和碳水会以脂肪的形式储存在身体中。另外,蛋白质吃得多能增加基础代谢。最后,力量训练后的 3 小时内,身体会加速合成蛋白质,所以可以在健身中和健身后摄入蛋白粉或者脱脂牛奶来提高增肌效果;
- 碳水对于减脂增肌也很重要,尤其是高低 GI 值的食物的分配;
- 对于脂肪,训练前、训练中以及训练后的 2 个小时之内,都不要摄入脂肪,因为会影响到生长激素的生成水平,导致减脂增肌效果不佳,其他时间摄入适量的脂肪反而对减脂效果有益;
- 关于食欲:有氧运动可能会让食欲增强,让身体处于增加体脂体重的状态,无氧运动可能会让食欲下降,让身体处于减少体脂体重的状态;短期运动的话,结论可能正相反;原因与瘦素和生长激素的分泌有关;
- 纯瘦猪肉与瘦牛肉和鸡胸肉相比,营养价值并不差,甚至各有所长,对于健身者,吃瘦猪肉的增肌效果可能比瘦牛肉和鸡胸肉的效果更好,因为瘦猪肉的肌酸含量更高,对于增长肌肉和增强力量特别有效;
- 训练计划非常重要,好的训练计划能让你事半功倍。
以上。