LeetCode - 兩數之和 (Two Sum)
題目描述: 給定一個整數數組 nums 和一個目標值 target,請在該數組中找出和為目標值的那兩個整數,並返回它們的索引。 範例: 輸入:nums = [2, 7, 11, 15], target = 9 輸出:[0, 1] 解釋:因為 nums[0] + nums[1] == 9,返回 [0, 1]。 解法思路: 使用哈希表來記錄已經遍歷過的數字及其索引。...
題目描述: 給定一個整數數組 nums 和一個目標值 target,請在該數組中找出和為目標值的那兩個整數,並返回它們的索引。 範例: 輸入:nums = [2, 7, 11, 15], target = 9 輸出:[0, 1] 解釋:因為 nums[0] + nums[1] == 9,返回 [0, 1]。 解法思路: 使用哈希表來記錄已經遍歷過的數字及其索引。...
這裡將 LeetCode 題目按不同的算法和數據結構類型進行分類,便於集中學習和針對性練習: 1. 數組與哈希表 (Array & Hashing) Two Sum:在數組中找出兩個數字,使其和等於目標值。 Contains Duplicate:判斷數組中是否包含重複元素。 Product of Array Except Self:返回一個數組,其中每個元素是其他...
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]] 解法思路: 使用回溯法構造所有排列。在每一層遞歸中,通過交換當前索引位置和下一個未處理位置的元素來...
46. 合併兩個有序鏈表 (Merge Two Sorted Lists) 題目描述:給定兩個升序鏈表,將它們合併成一個新的升序鏈表並返回。 範例: 輸入:l1 = [1,2,4], l2 = [1,3,4] 輸出:[1,1,2,3,4,4] 解法思路: 使用一個指針遍歷兩個鏈表,將較小的節點添加到新鏈表中。 若某一鏈表結束,直接將另一鏈表的剩餘部分加入新鏈表中。...
40. 字母異位詞分組 (Group Anagrams) 題目描述:給定一個字符串數組,將異位詞分組。異位詞是指包含相同字母但順序不同的字符串。 範例: 輸入:["eat", "tea", "tan", "ate", "nat", "bat"] 輸出:[["eat", "tea", "ate"], ["tan", "nat"], ["bat"]] 解法思路: 我們可以...
34. 二元樹的最大深度 (Maximum Depth of Binary Tree) 題目描述:給定一個二元樹,找出其最大深度。樹的最大深度是從根節點到最遠葉子節點的最長路徑上的節點數。 範例: 輸入: 3 / \ 9 20 / \ 15 7 輸出:3 解法思路: 使用遞歸的深度優先搜...
28. 字母異位詞分組 (Group Anagrams) 題目描述:給定一組字符串,將異位詞(由相同字母組成,但順序不同的單詞)分組。 範例: 輸入:strs = ["eat","tea","tan","ate","nat","bat"] 輸出:[["eat","tea","ate"],["tan","nat"],["bat"]] 解法思路: 使用字典來分組。對於每個...
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) 來解決這個問題。 將每個鏈...
18. K 個一組翻轉鏈表 (Reverse Nodes in k-Group) 題目描述:給定一個鏈表,將其中每 k 個節點一組進行翻轉,並返回翻轉後的鏈表。如果節點數目不是 k 的倍數,則最後剩餘的節點保持原樣。 範例: 輸入:head = [1,2,3,4,5], k = 2 輸出:[2,1,4,3,5] 解法思路: 使用遞歸或迭代的方式,每次找到 k 個節點後...
12. 合併區間 (Merge Intervals) 題目描述:給定若干個區間的集合,將重疊的區間合併。 範例: 輸入:[[1,3],[2,6],[8,10],[15,18]] 輸出:[[1,6],[8,10],[15,18]] 解釋:區間 [1,3] 和 [2,6] 重疊,合併為 [1,6]。 解法思路: 首先按照區間的起點進行排序。 遍歷排序後的區間,合...