LeetCode - 目錄
這裡將 LeetCode 題目按不同的算法和數據結構類型進行分類,便於集中學習和針對性練習:
1. 數組與哈希表 (Array & Hashing)
- Two Sum:在數組中找出兩個數字,使其和等於目標值。
- Contains Duplicate:判斷數組中是否包含重複元素。
- Product of Array Except Self:返回一個數組,其中每個元素是其他元素的乘積。
- Valid Sudoku:檢查 9x9 數獨是否有效。
- Top K Frequent Elements:返回數組中出現頻率最高的
k
個元素。 - Group Anagrams:將異位詞分組。
2. 雙指針與滑動窗口 (Two Pointers & Sliding Window)
- Valid Palindrome:判斷一個字符串是否為回文。
- Container With Most Water:找出容納最多水的兩根柱子之間的區域。
- 3Sum:在數組中找出三個數,使其和為零。
- Longest Substring Without Repeating Characters:找出不含重複字符的最長子串。
- Minimum Window Substring:找到包含所有目標字符的最小子串。
3. 字串操作 (String Manipulation)
- Longest Common Prefix:找出字符串數組中的最長公共前綴。
- Decode String:解碼嵌套的字符串(如 “3[a2[c]]” 轉換為 “accaccacc”)。
- Anagrams:檢查兩個字符串是否為異位詞。
- Longest Palindromic Substring:找出字符串中的最長回文子串。
- Implement strStr():查找字符串中的子字符串,返回其索引。
4. 鏈表 (Linked List)
- Reverse Linked List:反轉鏈表。
- Merge Two Sorted Lists:合併兩個排序鏈表。
- Linked List Cycle:檢查鏈表中是否有環。
- Remove Nth Node From End of List:刪除倒數第
n
個節點。 - Intersection of Two Linked Lists:找出兩個鏈表的相交點。
5. 樹與二元樹 (Tree & Binary Tree)
- Maximum Depth of Binary Tree:計算二元樹的最大深度。
- Invert Binary Tree:翻轉二元樹。
- Binary Tree Level Order Traversal:按層級順序遍歷二元樹。
- Serialize and Deserialize Binary Tree:將二元樹編碼為字符串,並將字符串解碼為二元樹。
- Lowest Common Ancestor of a Binary Tree:找出二元樹中兩個節點的最近公共祖先。
6. 二叉搜索樹 (Binary Search Tree - BST)
- Validate Binary Search Tree:檢查一棵樹是否為合法的二叉搜索樹。
- Kth Smallest Element in a BST:在二叉搜索樹中找到第
k
小的元素。 - Lowest Common Ancestor of a BST:找出二叉搜索樹中兩個節點的最近公共祖先。
- Convert Sorted Array to BST:將排序數組轉換為平衡的二叉搜索樹。
7. 堆 (Heap)
- Merge k Sorted Lists:合併
k
個排序鏈表。 - Top K Frequent Elements:找出出現頻率最高的
k
個元素。 - Kth Largest Element in an Array:在數組中找到第
k
大的元素。 - Find Median from Data Stream:動態數據流中的中位數查找。
8. 二分查找 (Binary Search)
- Binary Search:實現基本的二分查找。
- Search a 2D Matrix:在排序的 2D 矩陣中查找目標值。
- Find Minimum in Rotated Sorted Array:在旋轉的排序數組中找到最小值。
- Search in Rotated Sorted Array:在旋轉的排序數組中查找目標值。
- Median of Two Sorted Arrays:合併兩個排序數組並找出中位數。
9. 動態規劃 (Dynamic Programming - DP)
- Climbing Stairs:求爬樓梯的方法數。
- Coin Change:最少硬幣數組成目標值。
- House Robber:搶劫房屋問題,避免相鄰房屋。
- Longest Increasing Subsequence:求數組中的最長遞增子序列。
- Word Break:判斷是否可以用字典中的單詞拼出目標字符串。
10. 圖與圖的遍歷 (Graph & Graph Traversal)
- Number of Islands:計算 2D 網格中的島嶼數量。
- Clone Graph:克隆一個無向圖。
- Course Schedule:檢查課程表是否可以完成。
- Word Ladder:從一個單詞轉換為目標單詞的最短路徑。
- Pacific Atlantic Water Flow:查找矩陣中能流向太平洋和大西洋的所有位置。
11. 貪心算法 (Greedy)
- Jump Game:判斷是否可以跳到數組的最後一個位置。
- Gas Station:找到一個環形加油站路線的起點。
- Candy:分糖果問題,每個孩子至少得到一顆糖,並且滿足左右孩子的糖果分配規則。
- Meeting Rooms:檢查是否能同時安排所有會議。
- Partition Labels:分割字符串,使得每段中包含的字符不再出現在其他段中。
這樣的分類有助於專注於特定算法主題,逐步增強各類型題目的熟練度,從而更全面地掌握 LeetCode 題目的解法和思路!
本文章以 CC BY 4.0 授權