ARTS Week 20

風含葉發表於2020-12-27

ARTS Week 20

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-3sA4JKO5-1609047990162)(https://s3.ax1x.com/2020/12/07/DzELm6.md.jpg)]

你沒能拯救你母親是因為你沒有力量,而我沒有與巨人對抗是因為我沒有勇氣。 --《進擊的巨人》


Algoithm

最長同值路徑

概述

給定一個二叉樹,找到最長的路徑,這個路徑中的每個節點具有相同值。 這條路徑可以經過也可以不經過根節點。

注意:兩個節點之間的路徑長度由它們之間的邊數表示。

示例 1:

輸入:

              5
             / \
            4   5
           / \   \
          1   1   5
輸出:

2
示例 2:

輸入:

              1
             / \
            4   5
           / \   \
          4   4   5
輸出:

注意: 給定的二叉樹不超過10000個結點。 樹的高度不超過1000。

分析

Chuancey 解答

遞迴的幾個核心問題:

  1. 輸入引數
  2. 輸出結果
  3. 函式功能
  4. 終止條件

方法論:

  1. 將二叉樹看成 左子樹/根節點/右子樹
  2. 左/右子樹最長同值路徑

code


# Definition for a binary tree node.
class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

class Solution:
    def __init__(self):
        self.max_num = 0

    def longestUnivaluePath(self, root: TreeNode) -> int:
        self.dfs(root)
        return self.max_num
    
    def dfs(self,root):
        if not root:
            return 0
            
        left_length = self.dfs(root.left)
        right_length = self.dfs(root.right)
        
        left_arrow = right_arrow = 0
        # 如果分別計算左右子樹的同步
        if root.left and root.val == root.left.val:
            left_arrow = left_length + 1
        
        if root.right and root.val == root.right.val:
            right_arrow = right_length + 1

        self.max_num = max(self.max_num,left_arrow+right_arrow)

        return max(left_arrow,right_arrow)

Review

Software Architecture: The Most Important Architectural Patterns You Need to Know

概述

本文主要講述了一些事例:

  1. Layered Architecture
  2. Pipe and Filter
  3. Client Server
  4. Model View Controller
  5. Event Driven Architecture
  6. Microservices Architecture

Layered Architecture

大部分的分層模式可以分為:

  1. presentation
  2. business
  3. persistence
  4. database.

在這裡插入圖片描述


Tip

怎麼寫設計文件?

概述

框架:

  1. 現狀 :我們在哪裡,現狀是什麼樣的?

  2. 需求:我們的問題或訴求是什麼,要做何改進?

  3. 需求滿足方式:

    1. 要做成什麼樣,交付物規格,或者說使用介面(介面)是什麼?
    2. 怎麼做到?交付物的實現原理。

    程式 = 資料結構 + 演算法


Share

靜水流深,滄笙踏歌

概述

靜水流深,滄笙踏歌

相關文章