每周完成一个 ARTS:
Algorithm: 每周至少做一个 LeetCode 的算法题
Review: 阅读并点评至少一篇英文技术文章
Tips: 学习至少一个技术技巧
Share: 分享一篇有观点和思考的技术文章
attach
与 detach
语句题目:167. Two Sum II - Input array is sorted
难度:Easy
题意:Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.
The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2.
Note:
示例:
Input: numbers = [2,7,11,15], target = 9
Output: [1,2]
Explanation: The sum of 2 and 7 is 9. Therefore index1 = 1, index2 = 2.
解法:
介绍一个非常直观易懂的方法,这道题目比第一题要多出一个条件,就是给出的 numbers
数组是升序排列的,这样可以利用双指针法,简单明了地得出答案。
代码:
class Solution:
def twoSum(self, numbers: List[int], target: int) -> List[int]:
start, end = 0, len(numbers) - 1
while start != end:
sum = numbers[start] + numbers[end]
if sum < target:
start += 1
elif sum > target:
end -= 1
else:
return [start + 1, end + 1]
时间复杂度 O(N),空间复杂度 O(1)。
本周的文章来自 Medium,《These four “clean code” tips will dramatically improve your engineering team’s productivity》。文章参考了《代码整洁之道》,讲述了四条让你的代码变得更整洁的方法,并且有代码示例,非常值得一读:
attach
与 detach
语句在 R 中,我们经常会需要使用一个 dataframe 中的许多列来拟合回归,但每次都使用 dataFrame$col1
、dataFrame$col2
这样的方式未免有些麻烦,尤其是要重复对某些特定的列执行计算的时候,这样的方式既不直观,又不简洁。
我们可以使用 attach
语句,将对应的 dataframe 中的每一列直接添加到 R 的搜索路径中,这样可以直接使用对应的列名 col1
、col2
来执行计算。使用 detach
语句将这些变量从搜索路径中撤下。
做研究的时候,presentation 是一个必经的历程,使用 PPT 或者 Keynote 制作演示文稿就成了绕不开的话题,但是当我们需要同时展示研究思路、代码和实验结果的时候,PPT 和 Keynote 实际上并不好用。为此我尝试了不少其他方法。
首先我尝试了使用 LaTeX 制作 beamer 文稿,beamer 实际上是 PDF 文件,LaTeX 的优良特性让 beamer 可以支持许多格式的图表和代码。但 beamer 有两个问题,首先对于我这种颜值党,beamer 的几个默认的模板实在是不好看(如下图所示),第二,LaTeX 还是相对比较麻烦,尤其是在 Mac 上编译使用 LaTeX,用过的人都知道这有多痛苦。。
之后我接触了 R,RStudio 可以将 Rmarkdown 文档转化为演示文档,支持 beamer、HTML ioslide、HTML Slidy、PowerPoint 和 Shiny 文档。同时也支持内嵌 LaTeX 公式、R 代码高亮,制作出来的文档也还算精美。但这种方式也有一个缺点,就是如果要同时展示 R 和其他语言的代码的话,会造成其他 R 代码块显示混乱。。
最近我发现了一款支持将 Markdown 转化为演示文稿的软件,叫做 Deckset,官网在这里。Deckset 支持一键将 Markdown 转化为演示文稿,有多种内置模板可以选择,支持 LaTeX,支持 代码高亮,并且支持自定义 CSS 文件,文档非常精美,目前来说我没有遇到什么麻烦,感兴趣的朋友可以上手一试。