Yoru Karu Studio

程式設計學習筆記 | 生活心得

LeetCode 解題思路:104. Maximum Depth of Binary Tree(二元樹的最大深度)

題目描述

給定一個二元樹,返回其最大深度。

二元樹的最大深度是從根節點到最遠葉子節點的最長路徑上的節點數。

注意:葉子節點是指沒有子節點的節點。

範例 1:

輸入:root = [3,9,20,null,null,15,7]
輸出:3
解釋:
    3
   / \
  9  20
    /  \
   15   7
最大深度為 3

範例 2:

輸入:root = [1,null,2]
輸出:2
解釋:
  1
   \
    2
最大深度為 2

範例 3:

輸入:root = []
輸出:0
解釋:空樹的深度為 0

限制條件:

  • 樹中節點數的範圍是 [0, 10^4]
  • -100 <= Node.val <= 100

LeetCode 解題思路:94. Binary Tree Inorder Traversal(二叉樹的中序遍歷)

LeetCode 解題思路:Binary Tree Inorder Traversal(二叉樹的中序遍歷) 題目描述 給定一個二叉樹的根節點 root,返回它的中序遍歷。 範例 範例 1: 輸入:root = [1,null,2,3] 1 \ 2 / 3 輸出:[1,3,2]範例 2: 輸入:root = [] 輸出:[]範例 3: 輸入:root = [1] 輸出:[1]限制條件 樹中節點數目在範圍 [0, 100] 內 -100 <= Node.val <= 100 進階:遞迴演算法很簡單,你可以通過迭代演算法完成嗎? 核心概念 1. 什麼是中序遍歷? 中序遍歷(Inorder Traversal)的順序是:左子樹 → 根節點 → 右子樹 對於二叉樹: 4 / \ 2 6 / \ / \ 1 3 5 7 中序遍歷順序:1 → 2 → 3 → 4 → 5 → 6 → 7 (注意:對於二叉搜索樹,中序遍歷會得到升序序列)2.

LeetCode 解題思路:88. Merge Sorted Array(合併兩個有序數組)

LeetCode 解題思路:Merge Sorted Array(合併兩個有序數組) 題目描述 給你兩個按非遞減順序排列的整數數組 nums1 和 nums2,另有兩個整數 m 和 n,分別表示 nums1 和 nums2 中的元素數目。 請你合併 nums2 到 nums1 中,使合併後的數組同樣按非遞減順序排列。 注意:最終的排序數組不應由函數返回,而是儲存在數組 nums1 中。為了應對這種情況,nums1 的初始長度為 m + n,其中前 m 個元素表示應合併的元素,後 n 個元素為 0,應忽略。nums2 的長度為 n。 範例 範例 1: 輸入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3 輸出:[1,2,2,3,5,6] 解釋:需要合併 [1,2,3] 和 [2,5,6] 結果是 [1,2,2,3,5,6]範例 2: 輸入:nums1 = [1], m = 1, nums2 = [], n = 0 輸出:[1] 解釋:需要合併 [1] 和 [] 結果是 [1]範例 3:

LeetCode 解題思路:83. Remove Duplicates From Sorted List(刪除排序鏈表中的重複元素)

LeetCode 解題思路:Remove Duplicates from Sorted List(刪除排序鏈表中的重複元素) 題目描述 給定一個已排序的鏈表的頭節點 head,刪除所有重複的元素,使每個元素只出現一次。返回已排序的鏈表。 範例 範例 1: 輸入:head = [1,1,2] 輸出:[1,2] 視覺化: 1 → 1 → 2 → null ↓ 1 → 2 → null範例 2: 輸入:head = [1,1,2,3,3] 輸出:[1,2,3] 視覺化: 1 → 1 → 2 → 3 → 3 → null ↓ 1 → 2 → 3 → null限制條件 鏈表中的節點數在範圍 [0, 300] 內 -100 <= Node.val <= 100 題目保證鏈表是按升序排列的 核心概念 1. 問題本質分析 關鍵觀察: 已排序:相同的元素一定相鄰 刪除重複:保留第一個,刪除後續重複的 原地修改:不需要創建新鏈表 2.

LeetCode 解題思路:1. Two Sum(兩數之和)

題目描述

給定一個整數陣列 nums 和一個目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回它們的陣列索引。

你可以假設每種輸入只會對應一個答案。但是,陣列中同一個元素不能使用兩遍。

範例:

輸入:nums = [2,7,11,15], target = 9
輸出:[0,1]
解釋:因為 nums[0] + nums[1] == 9,返回 [0, 1]
0%