文章

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:動態數據流中的中位數查找。
  • 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 授權