天天看點

ARTS Week 9ARTS Week 9

ARTS Week 9

ARTS Week 9ARTS 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

概述

  1. 介紹自有簽名設定為安全可信任的方法。

Tip

redis 基礎架構

概述

  1. 通路架構

    socket server

    支援了更加多的通用架構

  2. 操作子產品
  3. 索引子產品
  4. 存儲子產品

    AOF & RDB

ARTS Week 9ARTS Week 9

Share

AOF 原理

概述

  1. 執行指令後才會寫入到日志中,不會影響目前語句執行,但是有可能會阻塞後面執行的語句,
  2. 僅僅記錄語句,不會影響其他的語句
  3. 重寫機制,合并相同操作,降低 檔案大小。異步重寫程序同步。
    ARTS Week 9ARTS Week 9

思考

沒有完全比對的結果,隻有平衡政策的一緻性

繼續閱讀