LeetCode 學習平台

101 題完整收錄 | Python & C++ & Java 詳解

101
總題數
42
Easy
34
Medium
25
Hard
難度篩選

Array & Two Pointers

#1
Easy
Two Sum
給定一個整數陣列和目標值,找出陣列中兩個數字相加等於目標值的索引位置。
ArrayHash Table
#26
Easy
Remove Duplicates from Sorted Array
從已排序陣列中移除重複元素,使用雙指標原地操作。
ArrayTwo Pointers
#27
Easy
Remove Element
移除陣列中所有等於給定值的元素,使用雙指標原地操作。
ArrayTwo Pointers
#35
Easy
Search Insert Position
在已排序陣列中找到目標值的索引,若不存在則返回插入位置。
ArrayBinary Search
#66
Easy
Plus One
對以陣列表示的非負整數加一。
ArrayMath
#88
Easy
Merge Sorted Array
合併兩個已排序陣列,使用雙指標從後往前填充。
ArrayTwo PointersSorting
#118
Easy
Pascal's Triangle
生成楊輝三角的前 n 行。
ArrayDynamic Programming
#119
Easy
Pascal's Triangle II
返回楊輝三角的第 k 行,空間優化版本。
ArrayDynamic Programming
#167
Easy
Two Sum II - Input Array Is Sorted
在已排序陣列中找出兩數之和,使用雙指標。
ArrayTwo PointersBinary Search
#169
Easy
Majority Element
找出出現次數超過一半的元素,使用 Boyer-Moore 投票算法。
ArrayHash TableDivide and Conquer
#217
Easy
Contains Duplicate
判斷陣列中是否有重複元素,使用集合。
ArrayHash TableSorting
#268
Easy
Missing Number
找出缺失的數字,使用數學公式或 XOR。
ArrayMathBit Manipulation
#283
Easy
Move Zeroes
將陣列中的 0 移到末尾,保持非零元素順序。
ArrayTwo Pointers
#350
Easy
Intersection of Two Arrays II
找出兩個陣列的交集,包含重複元素。
ArrayHash TableTwo Pointers
#704
Easy
Binary Search
標準二分搜尋實現。
ArrayBinary Search
#11
Medium
Container With Most Water
找出可以容納最多水的兩條線,使用雙指標技巧。
ArrayTwo PointersGreedy
#15
Medium
3Sum
找出陣列中所有總和為 0 的三元組,使用排序和雙指標。
ArrayTwo PointersSorting
#33
Medium
Search in Rotated Sorted Array
在旋轉排序陣列中搜尋目標值,使用二分搜尋。
ArrayBinary Search
#34
Medium
Find First and Last Position of Element
在已排序陣列中找出目標值的起始和結束位置。
ArrayBinary Search
#48
Medium
Rotate Image
將 n×n 矩陣順時針旋轉 90 度,要求原地操作。
ArrayMatrix
#53
Medium
Maximum Subarray
找出最大子陣列和,使用 Kadane 算法。
ArrayDynamic ProgrammingDivide and Conquer
#54
Medium
Spiral Matrix
按螺旋順序返回矩陣的所有元素。
ArrayMatrixSimulation
#75
Medium
Sort Colors
對包含 0、1、2 的陣列進行原地排序,使用荷蘭國旗問題算法。
ArrayTwo PointersSorting
#189
Medium
Rotate Array
旋轉陣列 k 步,使用反轉算法。
ArrayMathTwo Pointers
#238
Medium
Product of Array Except Self
計算除自身以外陣列的乘積,不使用除法。
ArrayPrefix Sum
#240
Medium
Search a 2D Matrix II
在行列均已排序的矩陣中搜尋目標值。
ArrayBinary SearchMatrix
#287
Medium
Find the Duplicate Number
找出陣列中的重複數字,使用快慢指標。
ArrayTwo PointersBinary Search
#4
Hard
Median of Two Sorted Arrays
找出兩個已排序陣列的中位數,時間複雜度要求 O(log(m+n))。
ArrayBinary SearchDivide and Conquer
#41
Hard
First Missing Positive
找出缺失的最小正整數,要求 O(n) 時間和 O(1) 空間。
ArrayHash Table
#42
Hard
Trapping Rain Water
計算可以接住的雨水量,使用雙指標或動態規劃。
ArrayTwo PointersDynamic Programming
#135
Hard
Candy
分糖果問題,使用貪心算法的雙向掃描策略。
ArrayGreedy

String

#28
Easy
Find the Index of the First Occurrence
在字串中找到第一個匹配子字串的索引,KMP 算法。
StringTwo Pointers
#38
Easy
Count and Say
外觀數列,迭代生成每一項,讀出數字的個數和數字本身。
StringSimulation
#58
Easy
Length of Last Word
返回字串中最後一個單詞的長度。
String
#67
Easy
Add Binary
計算兩個二進制字串的和。
MathStringBit Manipulation
#125
Easy
Valid Palindrome
判斷字串是否為回文,忽略大小寫和非字母數字字符。
Two PointersString
#171
Easy
Excel Sheet Column Title
將數字轉換為 Excel 欄位標題,26 進制轉換。
MathString
#205
Easy
Isomorphic Strings
判斷兩個字串是否同構,使用哈希表映射。
Hash TableString
#242
Easy
Valid Anagram
判斷兩個字串是否為字母異位詞。
Hash TableStringSorting
#344
Easy
Reverse String
反轉字串,使用雙指標原地操作。
Two PointersString
#387
Easy
First Unique Character in a String
找出字串中第一個不重複的字符索引。
Hash TableStringQueue
#412
Easy
Fizz Buzz
經典 FizzBuzz 問題,根據規則輸出字串。
MathStringSimulation
#3
Medium
Longest Substring Without Repeating Characters
找出最長無重複字符子字串,使用滑動視窗。
Hash TableStringSliding Window
#5
Medium
Longest Palindromic Substring
找出最長回文子字串,使用中心擴展或動態規劃。
StringDynamic Programming
#49
Medium
Group Anagrams
將字母異位詞分組,使用哈希表和排序。
Hash TableStringSorting
#91
Medium
Decode Ways
計算數字字串的解碼方法總數,使用動態規劃。
StringDynamic Programming
#139
Medium
Word Break
判斷字串是否可以被拆分成字典中的單詞,使用動態規劃。
Hash TableStringDynamic Programming
#10
Hard
Regular Expression Matching
實現正則表達式匹配,支援 '.' 和 '*',使用動態規劃。
StringDynamic ProgrammingRecursion
#32
Hard
Longest Valid Parentheses
找出最長有效括號子字串的長度,使用動態規劃或堆疊。
StringDynamic ProgrammingStack
#44
Hard
Wildcard Matching
實現萬用字符匹配,支援 '?' 和 '*',使用動態規劃。
StringDynamic ProgrammingGreedy
#72
Hard
Edit Distance
計算兩個字串的最小編輯距離,使用動態規劃。
StringDynamic Programming
#76
Hard
Minimum Window Substring
找出包含所有目標字符的最小子字串,使用滑動視窗。
Hash TableStringSliding Window

Hash Table

#136
Easy
Single Number
找出陣列中只出現一次的數字,使用 XOR 位元運算。
ArrayBit Manipulation
#202
Easy
Happy Number
判斷是否為快樂數,使用快慢指標檢測循環。
Hash TableMathTwo Pointers
#128
Medium
Longest Consecutive Sequence
找出最長連續序列的長度,要求 O(n) 時間。
ArrayHash TableUnion Find
#347
Medium
Top K Frequent Elements
找出前 K 個高頻元素,使用堆積或桶排序。
ArrayHash TableHeapBucket Sort

Tree

#101
Easy
Symmetric Tree
判斷二元樹是否鏡像對稱,使用遞迴或迭代。
TreeDFSBFS
#104
Easy
Maximum Depth of Binary Tree
計算二元樹的最大深度。
TreeDFSBFS
#112
Easy
Path Sum
判斷是否存在根到葉的路徑和等於目標值。
TreeDFSBFS
#226
Easy
Invert Binary Tree
翻轉二元樹,使用遞迴或迭代。
TreeDFSBFS
#98
Medium
Validate Binary Search Tree
驗證是否為有效的二元搜尋樹。
TreeDFSBST
#102
Medium
Binary Tree Level Order Traversal
二元樹的層序遍歷,使用佇列實現 BFS。
TreeBFS
#124
Hard
Binary Tree Maximum Path Sum
找出二元樹中的最大路徑和,使用後序遍歷。
TreeDFSDynamic Programming
#297
Hard
Serialize and Deserialize Binary Tree
序列化和反序列化二元樹,使用前序遍歷。
TreeDFSBFSDesign

Linked List

#21
Easy
Merge Two Sorted Lists
合併兩個已排序的鏈結串列成一個新的已排序串列。
Linked ListRecursion
#83
Easy
Remove Duplicates from Sorted List
從已排序鏈結串列中移除重複元素。
Linked List
#141
Easy
Linked List Cycle
判斷鏈結串列是否有環,使用快慢指標。
Linked ListTwo Pointers
#206
Easy
Reverse Linked List
反轉鏈結串列,使用迭代或遞迴。
Linked ListRecursion
#2
Medium
Add Two Numbers
將兩個非空鏈結串列中儲存的數字相加,每個節點包含一位數字。
Linked ListMath
#23
Hard
Merge k Sorted Lists
合併 k 個已排序的鏈結串列,使用最小堆積優化。
Linked ListHeapDivide and Conquer
#25
Hard
Reverse Nodes in k-Group
每 k 個節點一組進行翻轉鏈結串列,要求 O(1) 空間。
Linked ListRecursion
#146
Hard
LRU Cache
實現 LRU 快取機制,使用雙向鏈結串列和哈希表。
Hash TableLinked ListDesign

Dynamic Programming

#70
Easy
Climbing Stairs
爬樓梯的方法數,經典動態規劃入門題。
MathDynamic ProgrammingMemoization
#121
Easy
Best Time to Buy and Sell Stock
只能交易一次的股票最大利潤。
ArrayDynamic Programming
#62
Medium
Unique Paths
計算從左上到右下的不同路徑數,使用動態規劃。
MathDynamic ProgrammingCombinatorics
#64
Medium
Minimum Path Sum
找出從左上到右下的最小路徑和。
ArrayDynamic ProgrammingMatrix
#122
Medium
Best Time to Buy and Sell Stock II
可以進行多次交易的股票最大利潤,貪心算法。
ArrayGreedyDynamic Programming
#198
Medium
House Robber
打家劫舍問題,使用動態規劃。
ArrayDynamic Programming
#279
Medium
Perfect Squares
找出和為 n 的最少完全平方數,使用動態規劃或 BFS。
MathDynamic ProgrammingBFS
#300
Medium
Longest Increasing Subsequence
找出最長遞增子序列的長度,使用 DP 或二分搜尋。
ArrayBinary SearchDynamic Programming
#322
Medium
Coin Change
找出湊成總金額的最少硬幣數,使用動態規劃。
ArrayDynamic ProgrammingBFS
#416
Medium
Partition Equal Subset Sum
判斷是否可以將陣列分成兩個和相等的子集,0-1 背包問題。
ArrayDynamic Programming
#45
Hard
Jump Game II
計算跳躍到最後位置的最小次數,使用貪心算法。
ArrayGreedyDynamic Programming
#85
Hard
Maximal Rectangle
在二進制矩陣中找出最大矩形,將 2D 問題轉化為多個 1D 柱狀圖。
ArrayDynamic ProgrammingStack
#188
Hard
Best Time to Buy and Sell Stock IV
最多 k 次交易的股票最大利潤,狀態機 DP。
ArrayDynamic Programming
#312
Hard
Burst Balloons
戳氣球問題,區間 DP 經典題,反向思考最後戳哪個。
ArrayDynamic Programming

Stack & Queue

#20
Easy
Valid Parentheses
驗證括號字串是否有效,使用堆疊資料結構。
StringStack
#155
Medium
Min Stack
設計支援 O(1) 時間獲取最小值的堆疊。
StackDesign
#739
Medium
Daily Temperatures
找出下一個更高溫度的天數,使用單調棧。
ArrayStackMonotonic Stack
#84
Hard
Largest Rectangle in Histogram
找出柱狀圖中的最大矩形面積,使用單調棧。
ArrayStackMonotonic Stack
#239
Hard
Sliding Window Maximum
找出滑動視窗的最大值,使用單調雙端佇列。
ArrayQueueSliding WindowMonotonic Queue

DFS & BFS

#200
Medium
Number of Islands
計算島嶼數量,使用 DFS 或 BFS。
ArrayDFSBFSUnion Find
#127
Hard
Word Ladder
找出單詞接龍的最短轉換序列長度,使用 BFS。
Hash TableStringBFS
#329
Hard
Longest Increasing Path in a Matrix
矩陣中的最長遞增路徑,DFS + 記憶化搜尋。
ArrayDFSMemoizationMatrix

Backtracking

#79
Medium
Word Search
在字母矩陣中搜尋單詞,使用回溯法。
ArrayBacktrackingMatrix
#37
Hard
Sudoku Solver
使用回溯法解決數獨問題,填充所有空格。
BacktrackingArrayHash Table
#51
Hard
N-Queens
經典 N 皇后問題,使用回溯法找出所有解法。
BacktrackingArray

Math

#9
Easy
Palindrome Number
判斷一個整數是否為回文數,不使用字串轉換。
Math
#69
Easy
Sqrt(x)
實現 sqrt(x) 函數,返回 x 的平方根的整數部分。
MathBinary Search
#326
Easy
Power of Three
判斷一個整數是否為 3 的冪次方。
MathRecursion