Algorithm
本周选择的算法题是:Linked List Cycle。
规则
Given head
, the head of a linked list, determine if the linked list has a cycle in it.
There is a cycle in a linked list if there is some node in the list that can be reached again by continuously following the next
pointer. Internally, pos
is used to denote the index of the node that tail’s next
pointer is connected to. Note that pos
is not passed as a parameter.
Return true
if there is a cycle in the linked list. Otherwise, return false
.
Example 1:
Input: head = [3,2,0,-4], pos = 1
Output: true
Explanation: There is a cycle in the linked list, where the tail connects to the 1st node (0-indexed).
Example 2:
Input: head = [1,2], pos = 0
Output: true
Explanation: There is a cycle in the linked list, where the tail connects to the 0th node.
Example 3:
Input: head = [1], pos = -1
Output: false
Explanation: There is no cycle in the linked list.
Constraints:
- The number of the nodes in the list is in the range
[0, 104]
. -105 <= Node.val <= 105
pos
is-1
or a valid index in the linked-list.
Follow up: Can you solve it using O(1)
(i.e. constant) memory?
Solution
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def hasCycle(self, head: ListNode) -> bool:
if not head: return False
fast, slow = head, head
while fast and fast.next:
fast = fast.next.next
slow = slow.next
if fast == slow: return True
return False
Review
这篇文章介绍了 Docker 的存储,包括 layer 的产生:
- RUN
- COPY
- ADD
还有不会增加镜像尺寸的 intermediate layer:
- 上述指令以外的其他指令
dangling image:创建新的镜像,且未指定新的名称时,旧镜像将被标记为 dangling,名称显示为 <none>
。
最后还介绍了对镜像大小的影响,对于初学者来说还是很容易理解的。
Tip
修复了博客 TOC 显示不正确的问题。
TestFlight 的 API 有点坑:
- 创建 Beta Tester 时 builds 明明是数组,却只能传一个
- 还是创建 Beta Tester,添加 Group 关系时接口必报 500
而且在开发者论坛反馈的问题也没人回复,体验极差,还好有各种方法可以绕过去,最终实现了自动化。