CodingTour
ARTS #156

Algorithm

本周选择的算法题是:Number of Steps to Reduce a Number to Zero

规则

Given an integer num, return the number of steps to reduce it to zero.

In one step, if the current number is even, you have to divide it by 2, otherwise, you have to subtract 1 from it.

Example 1:

Input: num = 14
Output: 6
Explanation: 
Step 1) 14 is even; divide by 2 and obtain 7. 
Step 2) 7 is odd; subtract 1 and obtain 6.
Step 3) 6 is even; divide by 2 and obtain 3. 
Step 4) 3 is odd; subtract 1 and obtain 2. 
Step 5) 2 is even; divide by 2 and obtain 1. 
Step 6) 1 is odd; subtract 1 and obtain 0.

Example 2:

Input: num = 8
Output: 4
Explanation: 
Step 1) 8 is even; divide by 2 and obtain 4. 
Step 2) 4 is even; divide by 2 and obtain 2. 
Step 3) 2 is even; divide by 2 and obtain 1. 
Step 4) 1 is odd; subtract 1 and obtain 0.

Example 3:

Input: num = 123
Output: 12

Constraints:

  • 0 <= num <= 106

Solution

class Solution:
    def numberOfSteps(self, num: int) -> int:
        if not num: return 0
        ans = 0
        while num:
            ans += 2 if (num & 1) else 1
            num >>= 1
        return ans - 1

Review

Native React Apps Without React Native

这是一篇 Capacitor 的官方博客,可以从官方视角快速了解到与 RN 的定位差异。

RN 可以基于 JavaScript 和 React 开发出世界级的 native 应用,使用的也是 native 组件、原生手势,聚焦在 learn once, write anywhere。

Capacitor 则是通过调用 iOS、Android、Electron、Web 上的 Native SDK 构建应用,上层适配了各个 Web 技术栈,下层适配了各个平台,聚焦在 all in one code base。

Capacitor 就像是一个巨大的 bridge,为了实现 Native SDK,维护了一个独立的 Capacitor Plugins 仓库,这类设计也较为常见,比如美团的 knb:

同样是采用了定义公共接口、外部注入实现的设计。

Tip

Kodi,一个屡获殊荣的开源媒体播放器+数字媒体娱乐中心,可完美替代 Elmedia Player。

Share

钱、工作的本质是什么?当我们不断提起这些词的时候,很容易忽略了本质。

钱是可以用来换取其他商品的媒介,目的是促成交易达成,反复提起钱的时候,想清楚在钱背后想要的东西是更最重要的事。

工作这个词也很容易模糊背后的本质,工作的目的是去创造一些东西,再跟别人换回一些东西,创造价值是工作的本质,由于现代社会一个人的能力有限,因而在创造的过程中,我们可能会选择进入一些公司,就像钱作为交易媒介一样,公司也只是促成大规模协作的媒介,借由工作过程把我们自己变得更好,把它当成是磨练我们的工具,这样的视角能够让我们看清很多工作之外的东西。

看清事物背后的本质能让选择变得简单,或许会损害“短期”利益,但模糊的正确远比精确的错误更重要。

就像巴菲特当初选择关闭他的基金,看似个人财富大幅缩水,但这个举动使其投资资金的期限变为了永久,彻底不再因市场短期行为让自己倍感艰辛,同时不认同理念的人拿着现金离开了 — 他们与巴菲特的关系也结束了,可谓是昂贵的共识。

如果依照巴菲特1970年至今的真实投资回报率数据,假设保有解散时的规模,不再吸收任何新资金,并假设以每年超过6%的部分提成20%规则计算,现在基金规模将会有5500 亿美元以上,其中属于巴菲特个人的大约有3600亿美元。也就是说,为了保证资金的长期性质,巴菲特或许放弃了约2000亿美元的潜在财 富——如果不计算期间的捐赠,巴菲特的474998股伯克希尔A股,以 2019年末股价折算约1600亿美元。

不过,这其实是个错误的问题,如果没有资金的长期性质,巴菲特将不得不放弃几十年里的绝大部分投资机会,例如,大量的全资收购和持有某些股票长期不卖。结局或许和施洛斯类似,拥有更高的收益“率”和更少的财富“额”。

from 《巴芒演义》

当用一生的尺度看人生每个阶段的收获时,大概工作的前10年积累下的财富只是很小一部分,甚至 99% 的努力都被浪费掉了,虽然如此,我们也应该努力找到那 1%:

  • 找到有挑战的、能成长的工作
  • 找到你认可目标和方向的公司
  • 关注成就,以成就为荣

以及,为了我们自己,跟随具有领袖能力的人。