LeetCode - Intersection of Two Linked Lists(兩個鏈表的交點)
題目描述 給定兩個單向鏈表 headA 和 headB,找出它們的交點。若兩鏈表沒有交點,則返回 None。 定義交點: 交點是指兩個鏈表從某一個節點開始之後的節點完全一致。 範例: 輸入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4,5], skipA = 2, skipB = 3 輸出:Reference of ...
LeetCode - 兩數之和 (Two Sum)
題目描述: 給定一個整數數組 nums 和一個目標值 target,請在該數組中找出和為目標值的那兩個整數,並返回它們的索引。 範例: 輸入:nums = [2, 7, 11, 15], target = 9 輸出:[0, 1] 解釋:因為 nums[0] + nums[1] == 9,返回 [0, 1]。 解法思路: 使用哈希表來記錄已經遍歷過的數字及其索引。...
LeetCode - 目錄
這裡將 LeetCode 題目按不同的算法和數據結構類型進行分類,便於集中學習和針對性練習: 1. 數組與哈希表 (Array & Hashing) Two Sum:在數組中找出兩個數字,使其和等於目標值。 Contains Duplicate:判斷數組中是否包含重複元素。 Product of Array Except Self:返回一個數組,其中每個元素是其他...
LeetCode - Day 10
51. 全排列 (Permutations) 題目描述:給定一個不含重複數字的整數數組 nums,返回其所有可能的排列。 範例: 輸入:nums = [1,2,3] 輸出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 解法思路: 使用回溯法構造所有排列。在每一層遞歸中,通過交換當前索引位置和下一個未處理位置的元素來...
LeetCode - Day 9
46. 合併兩個有序鏈表 (Merge Two Sorted Lists) 題目描述:給定兩個升序鏈表,將它們合併成一個新的升序鏈表並返回。 範例: 輸入:l1 = [1,2,4], l2 = [1,3,4] 輸出:[1,1,2,3,4,4] 解法思路: 使用一個指針遍歷兩個鏈表,將較小的節點添加到新鏈表中。 若某一鏈表結束,直接將另一鏈表的剩餘部分加入新鏈表中。...
LeetCode - Day 8
40. 字母異位詞分組 (Group Anagrams) 題目描述:給定一個字符串數組,將異位詞分組。異位詞是指包含相同字母但順序不同的字符串。 範例: 輸入:["eat", "tea", "tan", "ate", "nat", "bat"] 輸出:[["eat", "tea", "ate"], ["tan", "nat"], ["bat"]] 解法思路: 我們可以...
LeetCode - Day 7
34. 二元樹的最大深度 (Maximum Depth of Binary Tree) 題目描述:給定一個二元樹,找出其最大深度。樹的最大深度是從根節點到最遠葉子節點的最長路徑上的節點數。 範例: 輸入: 3 / \ 9 20 / \ 15 7 輸出:3 解法思路: 使用遞歸的深度優先搜...
LeetCode - Day 6
28. 字母異位詞分組 (Group Anagrams) 題目描述:給定一組字符串,將異位詞(由相同字母組成,但順序不同的單詞)分組。 範例: 輸入:strs = ["eat","tea","tan","ate","nat","bat"] 輸出:[["eat","tea","ate"],["tan","nat"],["bat"]] 解法思路: 使用字典來分組。對於每個...
LeetCode - Day 5
23. 合併 K 個排序鏈表 (Merge k Sorted Lists) 題目描述:給定 k 個排序鏈表,將它們合併為一個排序的鏈表,並返回合併後的鏈表。 範例: 輸入:lists = [[1,4,5],[1,3,4],[2,6]] 輸出:[1,1,2,3,4,4,5,6] 解法思路: 使用 優先隊列 (Priority Queue) 來解決這個問題。 將每個鏈...