ARTS Week 9
凡是過往,皆為序章
Algoithm
旋轉連結清單
概述
給定一個連結清單,旋轉連結清單,将連結清單每個節點向右移動 k 個位置,其中 k 是非負數。
示例 1:
輸入: 1->2->3->4->5->NULL, k = 2
輸出: 4->5->1->2->3->NULL
解釋:
向右旋轉 1 步: 5->1->2->3->4->NULL
向右旋轉 2 步: 4->5->1->2->3->NULL
示例 2:
輸入: 0->1->2->NULL, k = 4
輸出: 2->0->1->NULL
解釋:
向右旋轉 1 步: 2->0->1->NULL
向右旋轉 2 步: 1->2->0->NULL
向右旋轉 3 步: 0->1->2->NULL
向右旋轉 4 步: 2->0->1->NULL
分析
先擷取其連結清單深度,進行取餘,然後list 切割
代碼
# Definition for singly-linked list.
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def rotateRight(self, head: ListNode, k: int) -> ListNode:
"""
1. 擷取深度
2. 計算 index
3. index 節點 設定為 頭結點, 連結清單最後一個節點對應開頭節點,index-1 設定為最後一個節點
"""
# 判斷其最後的結果是否一緻
if not head or not k:
return head
nums = []
total = 0
# 這裡需要注意的是需要同步其他的節點
p = head
while p:
total += 1
nums.append(p.val)
p = p.next
# 有可能需要循環,是以,記性取餘操作。
index = k % total
if not index:
return head
# 擷取最後的連結清單結果
res = nums[-index:] + nums[:total - index]
# 生成相關的狀态截圖
root = ListNode(-1)
p = root
for i in res:
node = ListNode(i)
root.next = node
root = root.next
return p.next
總結
單向連結清單結構,可以先周遊,擷取結果,然後再進行同步。
res = []
while head:
total += 1
res.append(head.val)
head = head.next
Review
Setting up HTTPS/TLS between a Kubernetes cluster and an iOS device with a self-signed certificate
概述
- 介紹自有簽名設定為安全可信任的方法。
Tip
redis 基礎架構
概述
-
通路架構
socket server
支援了更加多的通用架構
- 操作子產品
- 索引子產品
-
存儲子產品
AOF & RDB
Share
AOF 原理
概述
- 執行指令後才會寫入到日志中,不會影響目前語句執行,但是有可能會阻塞後面執行的語句,
- 僅僅記錄語句,不會影響其他的語句
- 重寫機制,合并相同操作,降低 檔案大小。異步重寫程序同步。
思考
沒有完全比對的結果,隻有平衡政策的一緻性