ARTS Week 13
阿新 • • 發佈:2021-11-21
Algorithm
本週的 LeetCode 題目為:116. 填充每個節點的下一個右側節點指標
題目簡介:給定一個 完美二叉樹 ,其所有葉子節點都在同一層,每個父節點都有兩個子節點。二叉樹定義如下:
struct Node {
int val;
Node *left;
Node *right;
Node *next;
}
填充它的每個 next 指標,讓這個指標指向其下一個右側節點。如果找不到下一個右側節點,則將 next 指標設定為 NULL。初始狀態下,所有 next 指標都被設定為 NULL。
第一種思路就是使用層次遍歷,將層次遍歷的結果用 next
指標連線起來就好。程式碼略
第二種思路,通過發現 next
指標可以發現可以分為兩類情況,第一類就是屬於同一個父節點,那麼左結點的 next
指標就是指向右結點,即 root.left.next = root.right
;第二類就是不屬於同一個父節點,那麼這個結點的 next
指標就是其父節點的下一個結點的左孩子,即 root.right.next = root.next.left
。通過的程式碼如下:
class Solution { public Node connect(Node root) { if (root == null) { return null; } Node left = root; while (left.left != null) { Node curr = left; while (curr != null) { curr.left.next = curr.right; curr.right.next = (curr.next != null) ? curr.next.left : null; curr = curr.next; } left = left.left; } return root; } }
Review
本週 Review 的英文文章為:Think Different. Think Users.
作者提供了換位思考的四個建議,分別是:
- 你要準備好去做
- 你不應該無償地去做,而是應該在為使用者服務過程中去做
- 如果你讓使用者感到滿意,那麼它將給你力量來抵制傳統的力量
- 傳統對你的觀點和使用者對你的觀點之間的差距越大,它就越有可能有潛力
Tip
Java 中 Arrays.sort()
和 Collections.sort()
的區別:
Arrays.sort()
:用來排序陣列,如int []
Collections.sort()
:用來排序列表,如List<Integer>
示例程式碼:
public class Main {
public static void main(String[] args) {
int[] arr = {2,4,3,1};
Arrays.sort(arr);
List<Integer> list = new ArrayList<>();
list.add(2);
list.add(4);
list.add(3);
list.add(1);
Collections.sort(list);
}
}
Share
最近開始認真看 OSTEP(Operating Systems: Three Easy Pieces) 作業系統導論三個簡單部分,同時在做課後習題,後面應該會將答案在部落格上分享出來。