ARTS 第 32 周

每周完成一个 ARTS:
Algorithm: 每周至少做一个 LeetCode 的算法题
Review: 阅读并点评至少一篇英文技术文章
Tips: 学习至少一个技术技巧
Share: 分享一篇有观点和思考的技术文章


Contents


Algorithm

67. Add Binary

题目:67. Add Binary

难度:Easy

题意:Given two binary strings, return their sum (also a binary string). The input strings are both non-empty and contains only characters 1 or 0.

示例 1:

Input: a = "11", b = "1"
Output: "100"

示例 2:

Input: a = "1010", b = "1011"
Output: "10101"

解法:

本题解法很直接,因为我们直觉上二进制加法是从右往左相加的,所以这个题目也要从右往左去读取需要相加的两个数,而且我们需要取两者之中更长的字符串。首先我们定义几个变量:result 表示最后的结果,value 表示当前位置相加的结果,carry 表示进位位,在每次相加结束后,需要计算进位位和当前位,然后将当前位加到 result 的前面。最后考虑是否需要再添加一个进位位。

代码:

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        result, value, carry = '', 0, 0

        for i in range(max(len(a), len(b))):
            value = carry
            if i < len(a):
                value += int(a[-(i+1)])
            if i < len(b):
                value += int(b[-(i+1)])
            carry = value // 2
            value = value % 2
            result = str(value) + result
        if carry:
            result = str(carry) + result

        return result

Review

Survivorship bias in Data Science and Machine Learning

本周阅读了 Medium 上的一篇讲述幸存者偏差的文章。文章从最基础的解释什么是「偏差」—— bias 开始,通过讲述二战时期飞机的幸存者的故事,引入了「幸存者偏差」这一概念,再通过几个生活中更为常见的例子让读者更加深了理解。之后举了一个「是否要提拔高中校长」的例子。最后讲述了在数据科学、机器学习和人工智能中非常容易由于「幸存者偏差」导致严重后果的三个应用场景。

文章语言不难,大概十分钟就可以读完,但是与读者的互动比较多,能帮助读者更容易地理解什么是「幸存者偏差」。


Tips

分享一位技术大佬 Corey Schafer

Corey Schafer,一位技术类 YouTuber,专注于分享各类技术教程。他的教程循序渐进,结构清晰,出了很多针对初学者的教学视频。我从他的视频中受益良多。B站有搬运资源,但似乎没有中文字幕。


Share

Python 中使用下划线 _ 来使大数字更易读以及「f-string」

有时候我们会遇到一些很长的数字,想知道这些数字的具体大小,比如下面这样:

a = 1000000000
b = 10000000

total = a + b

print(total)

我可能会一位一位去数 ab 的大小,数出来 a 是十亿,b 是一千万。这里有一个小窍门是,可以使用「下划线」_ 在每一个千位将大数区分开,这样使数字更易读:

a = 1_000_000_000
b = 10_000_000

total = a + b

print(total)

同时为了使结果也更易读,我们可以使用 Python 3.6 引入的「f-string」:

print(f'{total:,}')

这将会输出如下结果:

>>> a = 1_000_000_000
>>> b = 10_000_000
>>> total = a + b
>>> print(total)
1010000000
>>> print(f'{total:,}')
1,010,000,000

关于更多有关「f-string」的用法,可以查看这个链接