144. Binary Tree Preorder Traversal - Easy 前往題目 想法 和Inorder那題大同小異,加入結果的位置調換一下就好 思路Recursive: 加入結果 呼叫方法,並傳遞left 呼叫方法,並傳遞right Iterative: 迭代整個樹 嘗試走到最左邊,期間遇到節點就加入(他們都是父節點) 把當前指針變為右邊繼續迭代 CodeRecursive class Solution { List<Intege 2024-10-16 Leetcode > Easy #Leetcode #心得 #Stack #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 #Leetcode #心得 #Stack #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
725. Split Linked List in Parts - Medium 前往題目 想法 沒想到如何處理前面需要補上的部分 思路 得到list總長度 利用除法以及取餘得到最少要多少個元素在一個part,然後需要補多少個 開始建造part,如果有需要補的也要加上去,一次補一個(題目規定) 建造完一個part就把尾巴斷開,補上null 很多條件需要考慮… Code class Solution { public ListNode[] splitLi 2024-10-14 Leetcode > Medium #Leetcode #心得 #Linked List
92. Reverse Linked List II - Medium 前往題目 想法 先找左右邊界,然後再根據左右邊界定位翻轉 思路結果left和right根本就是index,還是1-based的 找到left node 循環right - left + 1次,期間都翻轉node 最後再拼接 Code class Solution { public ListNode reverseBetween(ListNode head, int le 2024-10-11 Leetcode > Medium #Leetcode #心得 #Linked List
203. Remove Linked List Elements - Easy 前往題目 想法 直覺的操作,單純刪除node 思路 循環直到cur.next為null 如果next的值等於目標值那就把next賦值為next.next 否則移動當前指針到下一個 Codeclass Solution { public ListNode removeElements(ListNode head, int val) { ListNod 2024-10-10 Leetcode > Easy #Leetcode #心得 #Recursion #Linked List
2487. Remove Nodes From Linked List - Medium 前往題目 思路 反轉list 疊代所有元素,並紀錄最大值,小於最大值的話直接移除(略過) 再次反轉 Code class Solution { public ListNode removeNodes(ListNode head) { // Reverse the list head = reverse(head); 2024-10-08 Leetcode > Medium #Leetcode #心得 #Stack #Recursion #Monotonic Stack #Linked List
83. Remove Duplicates from Sorted List - Easy 前往題目 想法 簡單的去元素操作 思路想得有點太複雜,原本還想把去掉的元素的next也改成null,網友的解法並沒有這樣做,不知道gc會不會回收 循環直到cur.next為null 兩兩比較,如果數值一樣,就更改next為下一個,但不要移動當前的node,除非數值不同再移動 Code網友解答 class Solution { public ListNode deleteD 2024-10-08 Leetcode > Easy #Leetcode #心得 #Linked List
86. Partition List - Medium 前往題目 想法 循環兩次,一次組小於x的,一次組大於等於x的 思路其實一次就好,一起組 宣告兩個新的list 走訪每個ListNode,< x的放一組,>= x的放一組 兩組連起來 Codeclass Solution { public ListNode partition(ListNode head, int x) { ListNo 2024-10-07 Leetcode > Medium #Leetcode #心得 #Two Pointers #Linked List