每周完成一个 ARTS:
Algorithm: 每周至少做一个 LeetCode 的算法题
Review: 阅读并点评至少一篇英文技术文章
Tips: 学习至少一个技术技巧
Share: 分享一篇有观点和思考的技术文章
题目:22. Generate Parentheses
难度:Medium
题意:给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
示例:给出 n = 3,生成结果为:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
解法:
本题解法参考了B站up主_Michelle小梦想家_的这个视频。
本题使用了递归法,又即「回溯法」。思路是:
curr
的当前字符串中;curr
append 进 result 中;代码如下:
class Solution(object):
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
if n == 0:
return []
result = []
self.helper('', n, n, result)
return result
def helper(self, curr, n_left, n_right, result):
if n_right < n_left:
return
if n_right == 0:
result.append(curr)
return result
if n_left > 0:
self.helper(curr + '(', n_left - 1, n_right, result)
if n_right > 0:
self.helper(curr + ')', n_left, n_right - 1, result)
时间复杂度和空间复杂度的分析比较困难,这里参考 LeetCode 的结论,均为。
Using Machine Learning to Solve Real-World Problems
这周 review 的文章是 Medium 上的一篇推荐文章,Using Machine Learning to Solve Real-World Problems。这篇文章是作者参加 Lambda School 课程的一篇笔记,笔记的内容是一项 Kaggle 比赛,使用DrivenData.org提供的数据,预测坦桑尼亚境内井水泵的好坏与是否需要维修,以节省金钱时间和人力。详细内容请看 Share 部分我的翻译版本。
删除 LaTeX 中的段落缩进
这个技巧看起来很简单,但是我发现我需要翻遍一页半的谷歌搜索结果才能找到答案。这里提供一下找到的方法。
LaTeX 会将前面有空行或用 \par
标记定义的任何内容归类为一个新段落。默认情况下,LaTeX 会缩进每个段落的第一行。要关闭此功能,将以下内容放在文档顶部或.sty文件中:
\setlength{\parindent}{0in}
《Using Machine Learning to Solve Real-World Problems》翻译