CodingTour
ARTS #77 | Start with Why

Algorithm

本周选择的算法题是:Remove Nth Node From End of List

规则如下:

Given the head of a linked list, remove the nth node from the end of the list and return its head.

Follow up: Could you do this in one pass?

Example 1:

Input: head = [1,2,3,4,5], n = 2
Output: [1,2,3,5]

Example 2:

Input: head = [1], n = 1
Output: []

Example 3:

Input: head = [1,2], n = 1
Output: [1]

Constraints:

  • The number of nodes in the list is sz.
  • 1 <= sz <= 30
  • 0 <= Node.val <= 100
  • 1 <= n <= sz

Solution

class Solution:
    def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
        root = ListNode(0, head)
        fast, slow = root, root
        for _ in range(n+1):
            fast = fast.next
        
        while fast:
            slow, fast = slow.next, fast.next
        slow.next = slow.next.next
        return root.next

Review

How a one line change decreased our clone times by 99%

Pinterest 工程效率团队的分享,描述他们在 CI Pipeline 中的一次优化行为。

因为我们的代码管理也是采用的 Monorepo 的方式,也面临着代码库尺寸不断增大的情况,所以类似的文章很有借鉴价值。

我也是通过这篇文章才知道还有一个 The Refspec 配置,任何优化,都得深入理解系统运作的原理,才能找到性能的瓶颈。

Tip

Python 3.5+ 合并字典:

dict1 = { 'a': 1, 'b': 2 }
dict2 = { 'b': 3, 'c': 4 }
merged = { **dict1, **dict2 }
print (merged)
# {'a': 1, 'b': 3, 'c': 4}

Share

Start with Why 是几年前的一篇 TED 演讲,讲述卓越的领导力是如何养成的,里面有一个称为黄金圈法则的概念:

我对这类概念有一些自己的理解过程,是几个「Why」:

  • 它对我的生活会有什么帮助
  • 它对我的选择会有什么帮助

或者用一个最直观的维度,就是体现在收入上,我们从两个主要的收入来源来看看。

对个人而言,找工作是以时间为货币,买入公司的未来。而选择公司就是选择人,我们总是会选择那些懂得「为什么做」的人,因为只有从这个圆圈出发的人才有能力激励周围的人,我们要追随真正的领袖,不是因为我们必须这样做,而是因为我们愿意。我们跟随具有领袖能力的人,不是为了他们,而是为我们自己。

对老板而言,找到合适的人很重要,如果你雇佣某人只是因为他能够做这份工作,他们就只是为你开的工资而工作。这没什么不对,但是在激烈的商业社会中只是这样是不够的,这是缺乏战斗力的团队。

敏捷专家 Mishkin Berteig 曾对团队做出过一个说明:

团队和一群人是有本质区别的,如果没有共同的工作理念和文化,而是各自在做各自的工作,那么不能称为是一个团队。自组织的第一要素就是必须有一个团队而不仅仅是一群人。其次,对团队共同的工作理念与文化形成基本的认识和理解。团队内形成规矩,这些规矩是不言而喻的,如果团队成员间能够达成这样的默契,那么才是真正高效的工作团队。最后一个阶段时,团队成员不需要遵从别人的详细指令。团队成员自愿分担不同的工作任务,而不是等别人来告诉他们怎么做。

所以雇佣跟你有共同信念的人,他们会为你付出热血和汗水。《小王子》中也有一个观点与之非常像:

如果你想造一艘船,就不要催着工人们去收集木材,分派工作,发号施令。你应该教会他们的是对无边无际大海的渴望。

安托万·德·圣埃克苏佩里,《小王子》

信念也体现在销售上。小米当年的营销“年轻人的第一部智能手机”、“发烧”等词精准的找到了拥有相同信念的用户群体,人们买的不是你的产品,而是你的信念。做公司的目标不是要跟所有需要你的产品的人做生意,而是跟与你有着相同理念的人做生意。

无论是对个人还是对老板,我们都没有直接提到收入,因为最好的收入是在信念践行的过程中额外提供的。