Yoru Karu Studio
程式設計學習筆記 | 生活心得程式設計學習筆記 | 生活心得
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.