每周完成一个 ARTS:
Algorithm: 每周至少做一个 LeetCode 的算法题
Review: 阅读并点评至少一篇英文技术文章
Tips: 学习至少一个技术技巧
Share: 分享一篇有观点和思考的技术文章
题图:macOS Big Sur Coastline
难度:Easy
题意:Given an integer n
, return true
if it is a power of two. Otherwise, return false
.
An integer n
is a power of two, if there exists an integer x
such that n == 2^x.
示例 1:
Input: n = 1
Output: true
Explanation: 2^0 = 1
示例 2:
Input: n = 16
Output: true
Explanation: 2^4 = 16
示例 3:
Input: n = 3
Output: false
示例 4:
Input: n = 3
Output: false
示例 5:
Input: n = 5
Output: false
Constraints:
-2^31 <= n <= 2^31 - 1
解法 1:
这道题其实非常简单,因为 Python 中可以直接调用 pow()
这个函数来计算指数/幂函数的,但我们也可以思考多一些方法。这里我用的第一种方法就是连除,就是把这个数字一直除以 2,看最后是否会剩下 1。
代码:
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
if n < 1:
return False
while n % 2 == 0:
n /= 2
return n == 1
解法 2:
这道题我们也可以通过逻辑运算的方式来解决。因为想到用二进制表示的话,所有 2 的幂都可以表示为 1000
的形式(这里用 n
来表示),而 n - 1
则会是 0111
的形式,如果把这两者相与,最后的结果一定会是 0
。
代码:
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
return n > 0 and (n & (n - 1)) == 0
这周的文章来自于 Medium,《The Secret to Hyper Productivity in 3 to 4 Hours a Day》。文章对 Cal Newport 的《Deep Work》这本书进行了简要的介绍,并结合 Cal Newport 的生平论证高效和深度的工作的有效性。
ML Visuals 是一个由 dair.ai 提供的机器学习画图模板项目,项目开源在 GitHub 上,现在已经有 3800 个 star 了。
ML Visuals 提供了一个机器学习相关、可自由使用的、专业而优雅的 PPT 模板,其中包含了基础组件、架构、ML 概念、抽象背景、渐变背景、ML 与健康、杂项、ML 系统设计与基础几大块。
包括矩阵与向量、基本操作或者转换、神经元等等
ML Visuals 开源在 GitHub 上,对应的 PPT 在 Google Slide 开源,由于网络环境的限制,后台回复「MLVisuals」获取 PPT 下载链接。
新年开始,我一直在跟着明白老师的训练营读李笑来的《把时间当作朋友》这本书,回答了很多作业中的问题,但都是私下自己写然后放到知识星球里。明白老师有一次强调到,厉害的人都是把一份时间的成果复用很多次,从而创造出多份的价值。我就想到,我可以把我每天的作业的回答发布到公众号上来,算是对自己日更的一个挑战。
今天把之前的回答都搬上来了,之后会把当天的作业同步发布在公众号里,大家可以在我的这个文章合集中查看。作业会每日更新。