1. 程式人生 > 其它 >ARTS Week 22

ARTS Week 22

技術標籤:ARTSPython後端

ARTS Week 22

r50wcV.jpg

如果不自己主動去接觸的話,是什麼也無法創造的。 --優紀《刀劍神域》


Algoithm

二叉搜尋樹序列

概述

從左向右遍歷一個數組,通過不斷將其中的元素插入樹中可以逐步地生成一棵二叉搜尋樹。給定一個由不同節點組成的二叉搜尋樹,輸出所有可能生成此樹的陣列。

示例: 給定如下二叉樹

    2
   / \
  1   3

返回:

[
   [2,1,3],
   [2,3,1]
]

分析

引用題解

  • 使用一個queue儲存下個所有可能的節點
  • 然後選擇其中一個作為path的下一個元素
  • 遞迴直到queue元素為空
  • 將對應的path加入結果中
  • 由於二叉搜尋樹沒有重複元素, 而且每次遞迴的使用元素的順序都不一樣, 所以自動做到了去重

code


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


class Solution:
    def __init__(self):
        self.res = []

    def BSTSequences(self, root:
TreeNode) -> list[list[int]]: if not root: return [[]] self.dfs(root, [], [root.val]) return self.res def dfs(self, root, q, path): # todo 這裡可以類比多少種 BFS樹等 if not root: return if root.left: q.append(root.left)
if root.right: q.append(root.right) if not q: self.res.append(path) for i, nex in enumerate(q): new_path = q[:i] + q[i + 1:] self.dfs(nex, new_path, path + [nex.val])

Review

How to build your own Neural Network from scratch in Python

概述

What’s a Neural Network?

Most introductory texts to Neural Networks brings up brain analogies when describing them. Without delving into brain
analogies, I find it easier to simply describe Neural Networks as a mathematical function that maps a given input to a
desired output.

Neural Networks consist of the following components

  • An input layer, x
  • An arbitrary amount of hidden layers
  • An output layer, ŷ
  • A set of weights and biases between each layer, W and b
  • A choice of activation function for each hidden layer, σ. In this tutorial, we’ll use a Sigmoid activation function.

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-UCuPo1or-1609159099287)(https://miro.medium.com/max/500/1*sX6T0Y4aa3ARh7IBS_sdqw.png)]

Training the Neural Network

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-kwyJCWLc-1609159099291)(https://miro.medium.com/max/355/1*E1_l8PGamc2xTNS87XGNcA.png)]


Tip

開源、雲服務與外包管理

軟體版本迭代的規劃

概述

  1. 開源是一種非常優秀的方式,如果可以希望能夠參加一些開源專案,不僅能夠提升自我技術,同時也能夠在管理專案方面有更加高的提升。
  2. 外部服務的順序:雲服務>開源>傳統外包
  3. 版本迭代方面:不同的時間段,還是需要進行不同的方向的優化。比如 golang 不同版本的迭代。

Share

時刻保證競爭力

概述

現在的技術更新速度愈發加快,同時因為疫情,現在的大環境降低,導致內卷愈演愈烈,同時寡頭效應初現,所以還是需要讓自己有足夠的積累,以及在某一方面
有非常深刻的理解。否則,隨著工作年限的提升,很難趕上現在對工作年限要求的能力的提升速度。
那麼應該如何應對:

  1. 堅持刷演算法題目:

    1. 二叉樹,二叉樹,二叉樹 一定要先將二叉樹簡單/中等 儘可能的全部刷完
    2. 型別題目,能夠將部分中等題目刷一定比例。
    3. 輸出方法論
  2. 專注某一個技術:

    1. 不論技術如何變化,但是底層的技術都是 IO模型的選擇和優化,所以需要對某一箇中間件/資料庫 能夠有非常全面的深入的理解。
    2. 設計模式的應用,每一個底層邏輯都會使用不同的設計模型,不僅僅要知道,同時也需要進行思考:
      1. 為什麼選擇這種模式?
      2. 是否可以選擇其他的模式?
      3. 如果讓你設計,你會如何設計?
  3. 提升自我能力:

    1. 提升協調資源的能力,能夠將事情做好很難,所以如果將一件事情能夠做好,才是最基礎的。
    2. 提升系統能力