前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ARTS 第 43 周

ARTS 第 43 周

作者头像
程序员小跃
发布2020-02-26 12:26:58
4070
发布2020-02-26 12:26:58
举报

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

题图:Photo by Willian Justen de Vasconcellos


Contents

  • Algorithm: 342. Power of Four
  • Review: One Habit That Changed My Life
  • Tip: 可能是微信排版的终极武器
  • Share: 聊聊近况和推荐最近正在阅读的两本书

Algorithm

A342. Power of Four

题目:342. Power of Four[1]

难度:Easy

题意:Given an integer (signed 32 bits), write a function to check whether it is a power of 4.

示例一:

Input: 16
Output: true

示例二:

Input: 5
Output: false

Follow up: Could you solve it without loops/recursion?

解法一:

这道题其实和第 326 题:Power of Three[2]非常像,解题思路也一样,但为什么还要做一遍呢?一个是为了保持手感,在遇到类似的简单题目的时候不至于出错;第二个原因就是题目中有个 Follow up,就是让你不用循环或者递归,来解这道题。

首先给出最直接的解题思路,就是一直对 4 取余,如果除不尽,那么肯定就不是 4 的幂,如果除尽了,看最后剩下的结果是不是 1,如果是 1,那么说明 num 是 4 的幂,否则不是。

代码:

class Solution:
    def isPowerOfFour(self, num: int) -> bool:
        while num >= 4:
            if num % 4 == 0:
                num /= 4
            else:
                return False
        return True if num == 1 else False

这种接法最为简单直接,时间复杂度 O(log N),空间复杂度 O(1)。

解法二:

上次 Power of Three 的解法,只要能整除 3 的 39 次方的数就一定是 3 的幂,那么这次是不是只要换成 4 的 39 次方就行了呢?实际上这次并不管用,一个非常简单的例子就是 2,2 能够整除所有的偶数,所以能整除 4^39 的数 2 也算一个,但 2 并不是 4 的幂,同样的还有 8、32,其实就是那些「是 2 的幂,但不是 4 的幂的数」也能满足这个条件,所以这种接法这次并不能适用。

在评论区我看到了一种非常清奇的思路,用 bin() 函数。。。下面放上一个给大家看看:

The idea is to go into the binary form of the number. If it's a 1 following by even number of zeros, then it's a power of four. e.g. bin(4**0) Out[27]: '0b1' bin(4**1) Out[28]: '0b100' bin(4**2) Out[29]: '0b10000' bin(4**3) Out[30]: '0b1000000' Codes:

class Solution(object):
    def isPowerOfFour(self, num):
        """
        :type num: int
        :rtype: bool
        """
        return bin(num)[3:] == len(bin(num)[3:])*'0' and len(bin(num)[3:])%2==0 if num!=0 else False

也就是经过 bin() 函数转为二进制表示之后,如果从第三(四)位开始到最后,每一位都是 0,而且一共有偶数个 0 的话,那么这个数就是 4 的幂。

同样的道理也可以应用到 2 的幂上,去掉「偶数个 0」的条件即可。


Review

One Habit That Changed My Life

本周阅读的是 Medium 上的一年关于个人成长的文章,《One Habit That Changed My Life[3]》。作者这这篇文章中对当今网络世界中充斥的各种对生活、饮食、自我提升等无处不在的建议进行了批判,并且给出了他本人坚持的一个简单的习惯:Question everything——也就是,对你接收到的任何建议都保持质疑的习惯。这样,你才会一直处在一个上升、上进的状态。

本文语言通俗,可以看出作者是个靠写作为生的人。也许很多来自于网络世界和你周围的人的建议都很有用,但保持质疑,才真正能提升你的那些「不容易被时间影响的能力」:沟通能力、同理心、系统思维和逻辑能力。


Tips

可能是微信排版的终极武器

我可能找到了(适合我的)微信排版的终极武器。

似乎是因为我在这个基于 wechat-formator 的微信编辑器的 GitHub[4] 上提了一个寻求 LaTeX 支持的 Issue,一位叫做 arron 的小哥(?)给我发了封邮件,推荐我使用另一个支持微信的 Markdown 编辑器——mdnice。地址在这里:https://mdnice.com/[5]。

我仔细看了看,除了支持常见的 Markdown 语法和自定义 CSS 外,mdnice 还支持图片自动上传微信服务器、表格、LaTeX 和横屏滑动幻灯片!这些就很棒了,待我仔细使用一段时间,再来向大家汇报!


Share

聊聊近况和推荐最近正在阅读的两本书

上次更新还是过年在家(还是在家好呀),那会儿还没有要禁足的命令,于是该吃吃该喝喝该出去约朋友出去约朋友,后来在家过年不出门,也就顺便给自己放了个假,陪爸妈打打扑克聊聊天,给他们解决一下电脑问题(Windows 真 lj ?),于是断更了一周。

接着假期余额不足,登上了回法国的飞机。(落地出机场甚至连发传单和量体温的人都没有,这非常的法国。)虽然出海关的时候非常 tranquille(法语「很 easy 啦」的意思),但还是一到家就被公司要求隔离了,在家办公,只是我花了两天时间搬了家,暂时没有书桌,还有些倒时差,就又断更了一周。下周开始要重新进入工作状态啦,远程工作还是非常考验自制力的。

回家的几天,我除了和朋友们打打游戏,还看了吴军老师的《全球科技通史[6]》与 著名统计学家 C.R. Rao 的《统计与真理——怎样运用偶然性[7]》。

全球科技通史

前者,从远古的石制刀具、水稻的驯化和陶器的产生,到工业革命、蒸汽机、电的产生和应用,再到信息技术、核聚变、基因编辑和量子通信,吴军老师为我们绘制了整个人类文明史的一幅鸟瞰图,阅读的过程中,我能感受到人类这个物种从挣扎着生存、适应环境,到改善生活、改变环境的变化过程,科技的力量贯穿始终。

统计与真理——怎样运用偶然性

后者揭示了统计学的基本原理,除了讲述统计学的原理和历史之外,作者还强调了「从数字中学习有助于成为有效率的人」这一观点。这本书涵盖了大量的统计学知识,却十分巧妙地点到为止,通过具体的实例对经典的统计学概念进行阐述,而不是刻板的专业术语和晦涩艰深的公式,这让这本书成为我今年推荐的 No.1。

最后送给大家一句话,算是共勉吧:

尽量避免自己被那些宏大而虚无的东西而打动,那些大都是想象的共同体,尽量去关注那些小的独立的个体和鲜活的生命吧。

参考资料

[1]

342. Power of Four: https://leetcode.com/problems/power-of-four

[2]

第 326 题:Power of Three: https://leetcode.com/problems/power-of-three

[3]

One Habit That Changed My Life: https://medium.com/personal-growth/one-habit-that-changed-my-life-63b4074eea28

[4]

这个基于 wechat-formator 的微信编辑器的 GitHub: https://github.com/doocs/md

[5]

https://mdnice.com/: https://mdnice.com/

[6]

全球科技通史: https://book.douban.com/subject/33385217/

[7]

统计与真理——怎样运用偶然性: https://book.douban.com/subject/1238685/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 奔跑吧攻城狮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Contents
  • Algorithm
    • A342. Power of Four
    • Review
      • One Habit That Changed My Life
      • Tips
        • 可能是微信排版的终极武器
        • Share
          • 聊聊近况和推荐最近正在阅读的两本书
            • 参考资料
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档