Simon Lai's Blog
  • 首頁
  • 歸檔
  • 分類
  • 標籤
  • 關於

3326. Minimum Division Operations to Make Array Non Decreasing - Medium

前往題目 想法 從後往前,遇到invalid的地方去試所有可行的divisor,找不到就是-1 思路這題是weekly contest差一點就寫出來了,TLE,應該是找divisor那邊太花時間 從後往前,因為最後一個是基準 循環過程中,遇到invalid的部分,嘗試把前數除到比後數小或等於 有辦法的話就繼續,沒有的話直接失敗回傳-1 Code網友解答 class Solution 
2024-10-22
Leetcode > Medium
#Leetcode #心得 #Array #Math #Greedy #Number Theory

872. Leaf-Similar Trees - Easy

前往題目 想法 走訪所有leaf並記錄下來,最後比較 思路 DFS遇到leaf放入list,走訪兩棵樹 比較是否兩個list順序一致 Codeclass Solution { public boolean leafSimilar(TreeNode root1, TreeNode root2) { ArrayList<Integer> val1
2024-10-19
Leetcode > Easy
#Leetcode #心得 #Binary Tree #Depth-First Search #Tree

938. Range Sum of BST - Easy

前往題目 想法 走訪所有節點時判斷並加入結果 思路遞迴 除了遇到null節點,其餘都判斷其值是否在範圍內,是的話就更新結果 呼叫兩次方法,並傳入左子節點和右子節點 Codeclass Solution { int res = 0; public int rangeSumBST(TreeNode root, int low, int high) {
2024-10-19
Leetcode > Easy
#Leetcode #心得 #Binary Search Tree #Binary Tree #Depth-First Search #Tree

112. Path Sum - Easy

前往題目 想法 走訪所有node,遇到leaf判斷當前總合是否等於目標總和 思路遞迴 遇到null回傳 否則更新當前總和,如果不是leaf則繼續呼叫方法走訪左右子樹 如果總和相等標記true Codeclass Solution { boolean res; public boolean hasPathSum(TreeNode root, int targetS
2024-10-18
Leetcode > Easy
#Leetcode #心得 #Binary Tree #Depth-First Search #Breadth-First Search #Tree

617. Merge Two Binary Trees - Easy

前往題目 想法 建立新的樹,每個節點的值相加 思路遞迴 遇到root1或root2其中一個是null就回傳另一個,兩個都是null也無所謂,因為就是把null加到樹上 兩個節點的值相加 左右節點再次呼叫方法 回傳當前節點 Code網友解答 但是這個方法挪用了舊的樹,也就是root1,題目想要我們merge them into a new binary tree class Solution
2024-10-18
Leetcode > Easy
#Leetcode #心得 #Binary Tree #Depth-First Search #Breadth-First Search #Tree

145. Binary Tree Postorder Traversal - Easy

前往題目 想法 和inorder與preorder差不多,調換加入的順序 思路與inorder還有preorder有點區別,比較刁鑽 迭代整個樹 過程中只要當前節點不是null就加入答案,並且放入stack,繼續往右邊節點走 當前節點為null時才去左邊節點 反轉答案並回傳 postorder是先訪問左右子節點再訪問父節點,因此這個思路是反過來操作,所以在最後直接反轉就是答案 Code網友
2024-10-17
Leetcode > Easy
#Stack #Leetcode #心得 #Binary Tree #Depth-First Search #Tree

144. Binary Tree Preorder Traversal - Easy

前往題目 想法 和Inorder那題大同小異,加入結果的位置調換一下就好 思路Recursive: 加入結果 呼叫方法,並傳遞left 呼叫方法,並傳遞right Iterative: 迭代整個樹 嘗試走到最左邊,期間遇到節點就加入(他們都是父節點) 把當前指針變為右邊繼續迭代 CodeRecursive class Solution { List<Intege
2024-10-16
Leetcode > Easy
#Stack #Leetcode #心得 #Binary Tree #Depth-First Search #Tree

94. Binary Tree Inorder Traversal - Easy

前往題目 想法 Recursion 思路Recursive: 呼叫方法,並傳遞left 加入結果 呼叫方法,並傳遞right Iterative: 迭代整個樹 嘗試走到最左邊,無法再走時加入其父節點到結果 把當前指針變為右邊繼續迭代 Code Recursive class Solution { List<Integer> res = new ArrayLis
2024-10-16
Leetcode > Easy
#Stack #Leetcode #心得 #Binary Tree #Depth-First Search #Tree

1721. Swapping Nodes in a Linked List - Medium

前往題目 想法 循環一次就能找到第一個目標,以及list的長度加以利用 思路寫出來了但還有我認為再更聰明一點的做法 我的解法: 走訪list找到第一個目標以及長度 利用長度再計算需要走多少步到目標,再次走訪 交換數值 更為聰明的解法: 走k步到達第一個目標 再一個指針cur從頭開始,與剛剛的第一個目標指針一起往右走訪直到最後,這時cur指針就會在第二個目標上 交換 Codeclass
2024-10-15
Leetcode > Medium
#Leetcode #心得 #Two Pointers #Linked List

Discord是如何降低40%的WebSocket流量?

以下為Quastor的文章總結,該文章是總結Discord的文章 Discord就不多做介紹了,所有的文字、檔案以及影片都需要透過網路傳遞,因此盡可能的降低流量至關重要 原本用什麼壓縮?自2017,Discord都是使用zlib壓縮訊息,可以讓檔案變小2至10倍小 現在換成什麼?經過Discord團隊的測試和調校,改為使用zstd以及Passive Sessions v2,本文重點討論zstd
2024-10-14
軟體工程 > 系統設計
#Discord #WebSocket #zlib #zstd
1…45678…36

搜尋

Hexo Fluid