按題號排序,包含原題說明、解題邏輯與程式碼。(注:題號不代表難度)
僅提供過去筆記中有所紀錄的題目
總計 leetcode 116 題 + APCS 歷屆考題 8 題。
1. Two Sum
日期: 2025/02/05 | 難度: Easy | 分類: 雜湊表
題目說明
給一個整數陣列 nums 和目標值 target,找出兩個數的索引使其和等於 target。
解題邏輯
用字典記錄「已見過的數 → 其索引」。遍歷時,檢查 target - n 是否在字典中,若在則直接回傳兩個索引。只需一次遍歷,時間複雜度 O(n)。
1 | class Solution: |
3. Longest Substring Without Repeating Characters
日期: 2025/01/15 | 難度: Medium | 分類: 滑動視窗、雜湊表
題目說明
給一個字串 s,找出不含重複字元的最長子字串長度。
解題邏輯
滑動視窗:用集合記錄視窗內的字元,右指針擴張時若遇重複字元,就從左收縮直到不重複,持續更新最大長度。
1 | class Solution: |
9. Palindrome Number
日期: 2024/12/20 | 難度: Easy | 分類: 數學
題目說明
給一個整數 x,判斷它是否為回文數。
解題邏輯
轉成字串後與反轉版本比較。
1 | class Solution: |
11. Container With Most Water
日期: 2025/02/05 | 難度: Medium | 分類: 雙指針
題目說明
給一個高度陣列,選兩條線使其與 x 軸圍成的容器能裝最多水。
解題邏輯
雙指針從兩端向中間夾,每次移動較短的那一側(因為移動較長的只會讓寬度縮短且高度不增),持續更新最大面積。
1 | class Solution: |
13. Roman to Integer
日期: 2024/12/21 | 難度: Easy | 分類: 字串、數學
題目說明
將羅馬數字字串轉換為整數。羅馬數字中若小值在大值左側,則為減法(如 IV = 4)。
解題邏輯
建立羅馬字母對應值的字典。遍歷字串,若當前值小於下一個值則減去,否則加上。
1 | class Solution: |
14. Longest Common Prefix
日期: 2024/12/21 | 難度: Easy | 分類: 字串
題目說明
找出字串陣列中所有字串的最長公共前綴。
解題邏輯
以第一個字串為基準,逐字元與其他字串比較,若某字元不匹配或某字串已結束,則回傳目前前綴。
1 | class Solution: |
22. Generate Parentheses
日期: 2025/01/24 | 難度: Medium | 分類: 回溯、遞迴
題目說明
給 n,生成所有合法的 n 對括號組合。
解題邏輯
回溯法:追蹤已放的左括號數 open 和右括號數 close,只在 open < n 時加左括號,只在 close < open 時加右括號,長度達 2n 時加入結果。
1 | class Solution: |
26. Remove Duplicates from Sorted Array
日期: 2024/12/15 | 難度: Easy | 分類: 陣列、雙指針
題目說明
已排序陣列原地去除重複元素,回傳不重複元素數量 k。
解題邏輯
用 set 去重後排序,覆寫回陣列前段,回傳長度。
1 | class Solution: |
27. Remove Element
日期: 2024/12/22 | 難度: Easy | 分類: 陣列、雙指針
題目說明
原地移除陣列中所有等於 val 的元素,回傳剩餘長度。
解題邏輯
雙指針:k 追蹤下一個有效位置,遍歷時遇到非 val 元素就放到 nums[k] 並移動 k。
1 | class Solution: |
28. Find the Index of the First Occurrence in a String
日期: 2024/12/23 | 難度: Easy | 分類: 字串
題目說明
在 haystack 中找 needle 第一次出現的索引,找不到回傳 -1。
解題邏輯
直接使用 Python 內建 find() 方法。
1 | class Solution: |
36. Valid Sudoku
日期: 2025/01/16 | 難度: Medium | 分類: 雜湊表、陣列
題目說明
判斷一個 9x9 數獨棋盤是否合法(行、列、3x3 方格各不重複非空格數字)。
解題邏輯
分別用集合驗證每行、每列、每個 3x3 子方格是否有重複數字。
1 | class Solution: |
39. Combination Sum
日期: 2024/12/31 | 難度: Medium | 分類: 回溯
題目說明
給一個不重複候選數陣列 candidates 和目標值 target,找出所有能組合出 target 的組合(數字可重複使用)。
解題邏輯
回溯:從當前索引開始選數,每次可重複選同一個數(繼續從 i 開始),當 target == 0 時記錄結果,超過則剪枝。
1 | class Solution: |
40. Combination Sum II
日期: 2024/12/31 | 難度: Medium | 分類: 回溯
題目說明
候選數有重複,每個數只能用一次,找出所有和為 target 的組合(結果不能重複)。
解題邏輯
先排序,回溯時跳過同層重複的數(i > start and candidates[i] == candidates[i-1] 時跳過),避免重複組合。
1 | class Solution: |
43. Multiply Strings
日期: 2025/01/24 | 難度: Medium | 分類: 數學、字串
題目說明
給兩個以字串表示的非負整數,回傳其乘積(也以字串表示),不能直接轉 int。
解題邏輯
模擬手算乘法:用一個長度 m+n 的陣列存中間結果,nums1[i] * nums2[j] 的結果影響位置 i+j 和 i+j+1,最後轉成字串並去掉前導零。
1 | class Solution: |
46. Permutations
日期: 2025/01/03 | 難度: Medium | 分類: 回溯
題目說明
給一個不含重複數字的陣列,回傳所有排列。
解題邏輯
回溯:每次從未使用的數中選一個加入路徑,長度等於 nums 時記錄,用 used 標記已選的數。
1 | class Solution: |
47. Permutations II
日期: 2025/01/04 | 難度: Medium | 分類: 回溯
題目說明
陣列含重複數字,回傳所有不重複的排列。
解題邏輯
先排序,回溯時跳過重複條件:同一層若前一個相同的數沒被使用過,則跳過(避免同層重複選)。
1 | class Solution: |
53. Maximum Subarray
日期: 2024/12/16 | 難度: Medium | 分類: 動態規劃(Kadane’s)
題目說明
找出連續子陣列的最大和。
解題邏輯
Kadane’s Algorithm:若當前累積和 p > 0,繼續累加;否則從當前元素重新開始。
1 | class Solution: |
54. Spiral Matrix
日期: 2024/12/29 | 難度: Medium | 分類: 陣列、模擬
題目說明
給一個 m×n 矩陣,以螺旋順序回傳所有元素。
解題邏輯
維護四個邊界(上下左右),每次沿著邊界走一圈,走完後將對應邊界收縮,直到所有元素都被走過。
1 | class Solution: |
55. Jump Game
日期: 2024/12/25 | 難度: Medium | 分類: 貪心
題目說明
給一個陣列,nums[i] 表示在位置 i 最多能跳幾步,判斷能否跳到最後一格。
解題邏輯
貪心:維護目前能到達的最遠距離 reach,遍歷時若當前位置超過 reach 就無法到達,否則更新 reach。
1 | class Solution: |
59. Spiral Matrix II
日期: 2025/01/21 | 難度: Medium | 分類: 陣列、模擬
題目說明
給 n,生成一個按螺旋順序填入 1 到 n² 的 n×n 矩陣。
解題邏輯
同 54 的螺旋走法,但改為填數而非讀數,維護四個邊界依序填入遞增數字。
1 | class Solution: |
62. Unique Paths
日期: 2025/01/05 | 難度: Medium | 分類: 動態規劃
題目說明
機器人從 m×n 網格左上角走到右下角,只能向右或向下,共有幾條路徑?
解題邏輯
DP:dp[i][j] = dp[i-1][j] + dp[i][j-1],第一行和第一列都只有一條路。
1 | class Solution: |
63. Unique Paths II
日期: 2025/01/15 | 難度: Medium | 分類: 動態規劃
題目說明
同 62,但格子中有障礙物(值為 1),無法通過障礙物。
解題邏輯
同 62 的 DP,遇到障礙物則該格路徑數為 0。
1 | class Solution: |
67. Add Binary
日期: 2024/12/22 | 難度: Easy | 分類: 字串、數學
題目說明
給兩個二進位字串 a 和 b,回傳它們的二進位和(字串形式)。
解題邏輯
將二進位字串轉整數相加,再轉回二進位字串(去掉 0b 前綴)。
1 | class Solution: |
70. Climbing Stairs
日期: 2024/12/17 | 難度: Easy | 分類: 動態規劃、費波那契
題目說明
每次走 1 步或 2 步,爬 n 階有幾種方法?
解題邏輯
費波那契數列滾動更新,f(n) = f(n-1) + f(n-2)。
1 | class Solution: |
73. Set Matrix Zeroes
日期: 2024/12/29 | 難度: Medium | 分類: 陣列、矩陣
題目說明
若矩陣中某元素為 0,則將其整行和整列都設為 0,原地修改。
解題邏輯
先轉置取得各列,再遍歷每行判斷是否有 0,若有則整行為零;對每格再判斷其所在列是否有 0,若有則設為 0。
1 | class Solution: |
75. Sort Colors
日期: 2025/01/21 | 難度: Medium | 分類: 雙指針、排序
題目說明
給只含 0、1、2 的陣列,原地排序(荷蘭旗問題)。
解題邏輯
使用三個計數指針 n0、n1、n2:遇到 0 時,把 2 放 n2、1 放 n1、0 放 n0,三個指針都推進;遇到 1 時放 n1 和 n2;遇到 2 只放 n2。
1 | class Solution: |
77. Combinations
日期: 2024/12/30 | 難度: Medium | 分類: 回溯
題目說明
給整數 n 和 k,回傳 1 到 n 中所有 k 個數的組合。
解題邏輯
回溯:從 j 開始選數,選夠 k 個就記錄,每次選完往後遞迴避免重複。
1 | class Solution: |
78. Subsets
日期: 2024/12/30 | 難度: Medium | 分類: 回溯
題目說明
給一個不重複整數陣列,回傳所有可能的子集(冪集)。
解題邏輯
DFS 回溯:每個節點都是一個子集(包含空集),每次從 j 開始選,防止重複。
1 | class Solution: |
88. Merge Sorted Array
日期: 2024/12/20 | 難度: Easy | 分類: 陣列、雙指針
題目說明
將兩個已排序陣列 nums2 合併入 nums1(原地),nums1 後段有 n 個空位。
解題邏輯 — 方法一(簡單排序)
把 nums2 貼到 nums1 後段再排序。
1 | class Solution: |
解題邏輯 — 方法二(從尾端合併,O(m+n))
從兩陣列尾端開始比較,每次將較大的值填入 nums1 的末端,逐步向前,避免覆蓋未處理的元素。
1 | class Solution: |
90. Subsets II
日期: 2025/01/15 | 難度: Medium | 分類: 回溯
題目說明
陣列含重複數字,回傳所有不重複的子集。
解題邏輯
先排序,回溯時跳過同層重複的元素(j < i and nums[i] == nums[i-1]),確保不生成重複子集。
1 | class Solution: |
91. Decode Ways
日期: 2025/01/04 | 難度: Medium | 分類: 動態規劃
題目說明
數字字串可映射到字母(1=A,…,26=Z),求有幾種解碼方式。
解題邏輯
DP:dp[i] 表示前 i 個字元的解碼方式數。若第 i 個字元不為 0,可由 dp[i-1] 轉來;若前兩個字元組成 10-26,可由 dp[i-2] 轉來。
1 | class Solution: |
100. Same Tree
日期: 2025/01/07 | 難度: Easy | 分類: 樹、遞迴
題目說明
判斷兩棵二元樹是否完全相同(結構和值都相同)。
解題邏輯
遞迴:兩節點都為空則 True;一個為空則 False;值不同則 False;否則遞迴比較左右子樹。
1 | class Solution: |
101. Symmetric Tree
日期: 2025/01/07 | 難度: Easy | 分類: 樹、BFS
題目說明
判斷一棵二元樹是否為左右對稱(鏡像樹)。
解題邏輯 — 方法一(BFS 配對)
用 queue 存配對節點 (t1, t2),每次取出比較,並將 (t1.left, t2.right) 和 (t1.right, t2.left) 加入 queue。
1 | class Solution: |
解題邏輯 — 方法二(逐層比較)
BFS 逐層取出節點值(包含 None),若每層的值列表不是回文則不對稱。
1 | class Solution: |
102. Binary Tree Level Order Traversal
日期: 2025/01/14 | 難度: Medium | 分類: 樹、BFS
題目說明
回傳二元樹的逐層遍歷結果(每層為一個列表)。
解題邏輯
BFS:用 queue 進行層序遍歷,每次處理同一層的所有節點並加入 level 列表。
1 | class Solution: |
104. Maximum Depth of Binary Tree
日期: 2025/01/07 | 難度: Easy | 分類: 樹、遞迴
題目說明
求二元樹的最大深度(根到最遠葉節點的節點數)。
解題邏輯
遞迴:每個節點的深度 = max(左子樹深度, 右子樹深度) + 1,空節點深度為 0。
1 | class Solution: |
107. Binary Tree Level Order Traversal II
日期: 2025/01/14 | 難度: Medium | 分類: 樹、BFS
題目說明
從下往上的層序遍歷(最底層先,根層最後)。
解題邏輯
與 102 相同的 BFS,但最後將結果列表反轉。
1 | from collections import deque |
111. Minimum Depth of Binary Tree
日期: 2025/01/07 | 難度: Easy | 分類: 樹、遞迴
題目說明
求二元樹的最小深度(根到最近葉節點的節點數)。
解題邏輯
遞迴,但需注意:若某節點只有一個子節點,不能取兩者的 min(另一邊是 0),要選有子節點的那側。
1 | class Solution: |
112. Path Sum
日期: 2025/01/08 | 難度: Easy | 分類: 樹、遞迴
題目說明
判斷是否存在從根到葉節點的路徑,使路徑上所有節點值之和等於 targetSum。
解題邏輯
遞迴:累加節點值,到達葉節點時判斷是否等於 targetSum。
1 | class Solution: |
118. Pascal’s Triangle
日期: 2024/12/22 | 難度: Easy | 分類: 動態規劃、陣列
題目說明
生成前 numRows 行的楊輝三角。
解題邏輯
先建立每行為全 1 的陣列,再從第三行開始更新中間元素 c[i][j] = c[i-1][j-1] + c[i-1][j]。
1 | class Solution: |
119. Pascal’s Triangle II
難度: Easy | 分類: 動態規劃
題目說明
只回傳楊輝三角第 rowIndex 行(0-indexed)。
解題邏輯
從 [1] 開始,每次在尾端加 0,然後從後往前更新 row[j] += row[j-1],等同於在同一個陣列上模擬楊輝三角的生成。
1 | class Solution: |
121. Best Time to Buy and Sell Stock
日期: 2024/12/16 | 難度: Easy | 分類: 貪心、動態規劃
題目說明
只能買賣一次,求最大利潤。
解題邏輯
一次遍歷:維護最低買入價 mn 和最大利潤 dp,每天更新兩者。
1 | class Solution: |
122. Best Time to Buy and Sell Stock II
日期: 2025/01/15 | 難度: Medium | 分類: 貪心
題目說明
可以多次買賣,但同一時間只能持有一股,求最大利潤。
解題邏輯
貪心:只要今天比昨天高,就把差價(利潤)加進來。等同於在每個上升段都賺到差價。
1 | class Solution: |
136. Single Number
日期: 2024/12/17 | 難度: Easy | 分類: 位元運算
題目說明
每個元素出現兩次,只有一個出現一次,找出它。
解題邏輯
XOR:相同的數 XOR 為 0,所有數 XOR 後剩下的就是只出現一次的數。
1 | class Solution: |
137. Single Number II
日期: 2024/12/17 | 難度: Medium | 分類: 位元運算
題目說明
每個元素出現三次,只有一個出現一次,用 O(1) 空間找出它。
解題邏輯
用兩個位元遮罩 x、y 模擬三進制計數,出現三次的數會被清零,剩下 x 就是答案。
1 | class Solution: |
150. Evaluate Reverse Polish Notation
日期: 2024/12/18 | 難度: Medium | 分類: Stack
題目說明
計算逆波蘭表達式(後綴表達式)。
解題邏輯
Stack:遇數字 push;遇運算子 pop 兩個數計算後 push 結果。
1 | class Solution: |
151. Reverse Words in a String
日期: 2025/01/24 | 難度: Medium | 分類: 字串
題目說明
反轉字串中的單字順序,去除多餘空白。
解題邏輯
split() 自動分割並去除多餘空白,然後反轉列表再用空格連接。
1 | class Solution: |
168. Excel Sheet Column Title
日期: 2025/01/02 | 難度: Easy | 分類: 數學
題目說明
給一個整數 n,回傳對應 Excel 欄位標題(1→A, 26→Z, 27→AA…)。
解題邏輯
類似 26 進位,但沒有 0(A=1, Z=26),每次取 (n-1) % 26 得字母,再將 n = (n-1) // 26。
1 | class Solution: |
189. Rotate Array
日期: 2024/12/15 | 難度: Medium | 分類: 陣列
題目說明
將陣列向右旋轉 k 步。
解題邏輯
Python 切片:取後 k 個接前面部分,k %= len(nums) 避免超出範圍。
1 | class Solution: |
198. House Robber
日期: 2024/12/24 | 難度: Medium | 分類: 動態規劃
題目說明
不能搶相鄰房子,求能搶到的最大金額。
解題邏輯
DP:dp[i] = max(dp[i-1], dp[i-2] + nums[i]),用兩個變數滾動代替陣列。
1 | class Solution: |
202. Happy Number
日期: 2024/12/23 | 難度: Easy | 分類: 數學、雜湊集合
題目說明
對一個數,反覆將各位數字的平方和替換,最終若能到 1 則為「快樂數」。
解題邏輯
用集合記錄見過的數,若重複出現代表進入循環(不是快樂數),若到 1 則是。
1 | class Solution: |
205. Isomorphic Strings
日期: 2024/12/24 | 難度: Easy | 分類: 字串、雜湊表
題目說明
判斷兩個字串是否同構(可以通過一對一的字元映射使 s 變成 t)。
解題邏輯
建立兩個方向的映射字典,確保 s→t 和 t→s 的映射都是一對一的。
1 | class Solution: |
209. Minimum Size Subarray Sum
日期: 2025/01/21 | 難度: Medium | 分類: 滑動視窗
題目說明
找和 ≥ target 的最短連續子陣列長度。
解題邏輯
滑動視窗:右指針 i 擴張累加,當 s >= target 時記錄長度並從左收縮,持續更新最小長度。
1 | class Solution: |
213. House Robber II
日期: 2024/12/25 | 難度: Medium | 分類: 動態規劃
題目說明
房子排成環狀(首尾相鄰),不能搶相鄰房子,求最大金額。
解題邏輯
環狀問題拆成兩個線性問題:搶 nums[0..n-2] 或搶 nums[1..n-1],取兩者最大值。每個子問題用 House Robber I 的 DP 解。
1 | class Solution: |
216. Combination Sum III
日期: 2025/01/04 | 難度: Medium | 分類: 回溯
題目說明
從 1-9 中選 k 個不重複的數,使其和為 n,找所有組合。
解題邏輯
回溯:從當前數開始選,選夠 k 個且和為 n 時記錄,超出則剪枝。
1 | class Solution: |
219. Contains Duplicate II
日期: 2024/12/27 | 難度: Easy | 分類: 雜湊表、滑動視窗
題目說明
判斷陣列中是否存在兩個相同的數,且它們的索引差 ≤ k。
解題邏輯
用字典記錄每個數最後出現的索引,若同一個數再次出現且索引差 ≤ k 則回傳 True。
1 | class Solution: |
224. Basic Calculator
日期: 2024/12/18 | 難度: Hard | 分類: Stack、字串解析
題目說明
計算含 +、-、括號的運算式字串。
解題邏輯 — 方法一(Shunting Yard)
轉換中綴為 RPN 再計算,負號在開頭或括號後補 0- 處理。
解題邏輯 — 方法二(符號追蹤,精簡版)
Stack 存外層符號方向,括號改變符號環境,每遇到數字就乘上當前符號方向加入結果。
1 | class Solution: |
226. Invert Binary Tree
日期: 2025/01/13 | 難度: Easy | 分類: 樹、遞迴
題目說明
翻轉一棵二元樹(左右子樹互換)。
解題邏輯
遞迴:交換左右子節點,再遞迴翻轉兩個子樹。
1 | class Solution: |
227. Basic Calculator II
日期: 2024/12/18 | 難度: Medium | 分類: Stack
題目說明
計算含 +、-、*、/ 的運算式(無括號)。
解題邏輯 — 方法一(Shunting Yard)
轉 RPN 後求值,利用優先級字典控制 pop 時機。
解題邏輯 — 方法二(Stack 直接計算)
用上一個運算子 t 決定當前數的處理方式:+/- 直接 push 正負數,*// 則 pop 上一個數計算後再 push,最後 sum(stack)。
1 | class Solution: |
240. Search a 2D Matrix II
日期: 2025/01/24 | 難度: Medium | 分類: 二分搜尋、矩陣
題目說明
在每行從左到右、每列從上到下已排序的矩陣中搜尋目標值。
解題邏輯
從右上角開始:若當前值 > target 則左移(列–),若 < target 則下移(行++),直到找到或越界。
1 | class Solution: |
242. Valid Anagram
日期: 2024/12/17 | 難度: Easy | 分類: 字串、雜湊表
題目說明
判斷 t 是否為 s 的字母異位詞。
解題邏輯
Counter 統計字母頻次,比較兩個 Counter 是否相等。
1 | class Solution: |
257. Binary Tree Paths
日期: 2025/01/09 | 難度: Easy | 分類: 樹、DFS、回溯
題目說明
回傳二元樹從根到所有葉節點的路徑(字串格式如 “1->2->5”)。
解題邏輯
DFS:遞迴向下走,到達葉節點時將路徑加入結果,路徑用 -> 連接。
1 | class Solution: |
263. Ugly Number
日期: 2025/01/03 | 難度: Easy | 分類: 數學
題目說明
醜數是只含質因數 2、3、5 的正整數,判斷 n 是否為醜數。
解題邏輯
不斷整除 2、3、5,最後若等於 1 則是醜數。
1 | class Solution: |
283. Move Zeroes
日期: 2024/12/16 | 難度: Easy | 分類: 陣列
題目說明
原地將所有 0 移到末尾,保持非零元素相對順序。
解題邏輯
計算 0 的個數,反覆執行「移除第一個 0 → 末尾補 0」。
1 | class Solution: |
290. Word Pattern
日期: 2024/12/28 | 難度: Easy | 分類: 字串、雜湊表
題目說明
判斷 pattern 和 s 是否遵循相同的模式(字母對單字,一對一映射)。
解題邏輯
建立雙向映射(字母→單字、單字→字母),確保兩側都是一對一。
1 | class Solution: |
300. Longest Increasing Subsequence
日期: 2025/01/05 | 難度: Medium | 分類: 動態規劃
題目說明
找出最長嚴格遞增子序列的長度。
解題邏輯
DP:dp[i] = 以 nums[i] 結尾的最長遞增子序列長度,對每個 i 往前找所有 j < i 且 nums[j] < nums[i] 的 dp[j]+1 取最大。
1 | class Solution: |
322. Coin Change
日期: 2025/01/24 | 難度: Medium | 分類: 動態規劃
題目說明
給硬幣面額陣列和目標金額,求湊成 amount 所需的最少硬幣數,無法湊成回傳 -1。
解題邏輯
Bottom-up DP:dp[i] = 湊成金額 i 的最少硬幣數。對每個金額,嘗試所有硬幣,dp[i] = min(dp[i], dp[i-c]+1)。
1 | class Solution: |
334. Increasing Triplet Subsequence
日期: 2025/02/03 | 難度: Medium | 分類: 貪心
題目說明
判斷是否存在長度為 3 的遞增子序列。
解題邏輯
貪心:維護兩個變數 first(最小值)和 second(在 first 之後的次小值),若遇到比 second 大的數則找到三元組。
1 | class Solution: |
338. Counting Bits
日期: 2025/01/02 | 難度: Easy | 分類: 動態規劃、位元運算
題目說明
給 n,回傳 0 到 n 每個數的二進位表示中 1 的個數。
解題邏輯
DP:dp[i] = dp[i >> 1] + (i & 1)(右移一位去掉最低位,加上最低位是否為 1)。
1 | class Solution: |
342. Power of Four
日期: 2025/01/02 | 難度: Easy | 分類: 數學、位元運算
題目說明
判斷 n 是否為 4 的冪次方。
解題邏輯
4 的冪次方同時是 2 的冪次方(n & (n-1) == 0),且其二進位的 1 只出現在奇數位(用 0x55555555 遮罩驗證)。
1 | class Solution: |
344. Reverse String
日期: 2024/12/23 | 難度: Easy | 分類: 雙指針、字串
題目說明
原地反轉字元陣列。
解題邏輯
雙指針從兩端向中間交換,或直接用切片賦值。
1 | class Solution: |
345. Reverse Vowels of a String
日期: 2025/02/03 | 難度: Easy | 分類: 雙指針、字串
題目說明
只反轉字串中的母音字母,其他字母位置不變。
解題邏輯
雙指針:左右指針向中間靠,都指到母音時交換,否則對應移動指針。
1 | class Solution: |
350. Intersection of Two Arrays II
日期: 2024/12/15 | 難度: Easy | 分類: 雜湊表
題目說明
找兩個陣列的交集(含重複元素),每個元素出現次數取兩者最小值。
解題邏輯
找共同元素集合,每個元素按 min(count1, count2) 次加入結果。
1 | class Solution: |
371. Sum of Two Integers
日期: 2024/12/28 | 難度: Medium | 分類: 位元運算
題目說明
不使用 + 或 -,計算兩個整數的和。
解題邏輯
用位元運算:XOR 得到不進位的和,AND 左移 1 位得到進位,反覆直到無進位。Python 需處理負數補碼(mask 限制位元數)。
1 | class Solution: |
383. Ransom Note
日期: 2025/01/03 | 難度: Easy | 分類: 字串、雜湊表
題目說明
判斷是否可以用 magazine 中的字母拼出 ransomNote(每個字母只能用一次)。
解題邏輯
Counter 統計兩者字母頻次,ransomNote 的每個字母在 magazine 中都要有足夠數量。
1 | class Solution: |
387. First Unique Character in a String
日期: 2024/12/23 | 難度: Easy | 分類: 字串、雜湊表
題目說明
找字串中第一個不重複字元的索引,不存在回傳 -1。
解題邏輯
Counter 統計頻次,再遍歷找第一個頻次為 1 的字元。
1 | class Solution: |
389. Find the Difference
日期: 2024/12/17 | 難度: Easy | 分類: 字串、位元運算
題目說明
字串 t 是 s 打亂後多插入一個字母,找出多出的那個字母。
解題邏輯
將 t 所有字母的 ASCII 碼加總,減去 s 所有字母的 ASCII 碼,差值即為多出字母的 ASCII。
1 | class Solution: |
392. Is Subsequence
日期: 2025/02/05 | 難度: Easy | 分類: 雙指針、字串
題目說明
判斷 s 是否為 t 的子序列(保持相對順序但不一定連續)。
解題邏輯
雙指針:i 指向 s,j 指向 t,遍歷 t,遇到 s[i] 時 i 前進,最終若 i == len(s) 則是子序列。
1 | class Solution: |
404. Sum of Left Leaves
日期: 2025/01/09 | 難度: Easy | 分類: 樹、遞迴
題目說明
計算二元樹所有左葉節點的值之和。
解題邏輯
遞迴:傳遞一個 is_left 標記,到達葉節點且 is_left=True 時加入結果。
1 | class Solution: |
405. Convert a Number to Hexadecimal
日期: 2025/01/02 | 難度: Easy | 分類: 位元運算、數學
題目說明
將整數轉換為十六進位字串,負數用補碼(二的補碼)表示。
解題邏輯
每次取最低 4 位(n & 0xf)轉成十六進位字元,再右移 4 位,重複 8 次(32 位)。
1 | class Solution: |
409. Longest Palindrome
日期: 2024/12/27 | 難度: Easy | 分類: 字串、雜湊表
題目說明
給一個字串,用其字母能組成的最長回文串長度。
解題邏輯
出現偶數次的字母全部可用,出現奇數次的字母可用奇數-1個,若有任何奇數次的字母還可以在中間多放一個。
1 | class Solution: |
435. Non-overlapping Intervals
日期: 2025/01/05 | 難度: Medium | 分類: 貪心、排序
題目說明
找最少需要移除幾個區間才能使剩餘區間互不重疊。
解題邏輯
貪心:按結束時間排序,盡量保留結束時間早的區間(貪心選擇),遇到重疊就計數移除。
1 | class Solution: |
437. Path Sum III
日期: 2025/02/24 | 難度: Medium | 分類: 樹、前綴和
題目說明
找二元樹中所有路徑(不須從根到葉)使路徑上節點值之和等於 targetSum,路徑方向只能向下。
解題邏輯
前綴和 + DFS:用字典記錄從根到當前節點的前綴和出現次數,每個節點檢查是否存在 prefix_sum - targetSum 在字典中,即可得到以當前節點結尾的合法路徑數。
1 | class Solution: |
443. String Compression
日期: 2025/02/03 | 難度: Medium | 分類: 字串、雙指針
題目說明
原地壓縮字元陣列:連續相同字元用「字元+次數」表示(次數為 1 時省略),回傳壓縮後長度。
解題邏輯
雙指針:i 掃描,w 寫入位置,統計連續相同字元的數量後寫入字元和數字(多位數分別寫入)。
1 | class Solution: |
448. Find All Numbers Disappeared in an Array
日期: 2024/12/27 | 難度: Easy | 分類: 陣列
題目說明
在長度為 n 的陣列(值在 1-n 之間),找出所有未出現的數。
解題邏輯
將 nums[abs(nums[i])-1] 標記為負數(表示該索引對應的值出現過),最後正數位置的索引+1 就是未出現的數。
1 | class Solution: |
463. Island Perimeter
日期: 2024/12/28 | 難度: Easy | 分類: 陣列、矩陣
題目說明
給一個格狀地圖,1 代表陸地,0 代表水,計算島嶼的周長。
解題邏輯
每個陸地格貢獻 4 條邊,但相鄰的陸地格共享的邊不算,每對相鄰陸地減 2。
1 | class Solution: |
476. Number Complement
日期: 2025/01/02 | 難度: Easy | 分類: 位元運算
題目說明
給一個正整數,回傳其補數(翻轉二進位所有位元)。
解題邏輯
建立一個與 num 位數相同的全 1 遮罩,用 XOR 翻轉所有位元。
1 | class Solution: |
494. Target Sum
日期: 2025/01/24 | 難度: Medium | 分類: 動態規劃、回溯
題目說明
對陣列每個數加 + 或 -,使其總和等於 target,求有幾種方式。
解題邏輯
DP(字典記錄可能的和及次數):從空開始,每次加入一個數,更新每種和的出現次數。
1 | class Solution: |
496. Next Greater Element I
日期: 2024/12/28 | 難度: Easy | 分類: Stack、單調堆疊
題目說明
給 nums1 和 nums2(nums1 是 nums2 的子集),對 nums1 的每個元素找在 nums2 中右側第一個更大的元素。
解題邏輯
單調遞減堆疊:遍歷 nums2,維護一個單調遞減的 stack,遇到比 stack 頂更大的數時,stack 頂的「下一個更大元素」就是當前數,記入字典。最後查 nums1 的元素。
1 | class Solution: |
500. Keyboard Row
日期: 2024/12/27 | 難度: Easy | 分類: 字串、雜湊表
題目說明
找出陣列中能用鍵盤同一行字母拼寫的單字。
解題邏輯
定義三行的字母集合,判斷每個單字的字母是否全在同一行中。
1 | class Solution: |
543. Diameter of Binary Tree
日期: 2025/01/13 | 難度: Easy | 分類: 樹、遞迴
題目說明
求二元樹的直徑(任意兩節點間最長路徑的邊數)。
解題邏輯
DFS:每個節點的直徑候選 = 左子樹深度 + 右子樹深度,遞迴過程中更新全域最大值。
1 | class Solution: |
556. Next Greater Element III
日期: 2024/12/28 | 難度: Medium | 分類: 數學、字串
題目說明
給一個整數 n,找出用 n 的各位數字重排後比 n 大的最小整數,不存在或超出 32 位範圍則回傳 -1。
解題邏輯
Next permutation 演算法:從右找第一個下降點 i,再從右找第一個比 digits[i] 大的數交換,最後反轉 i+1 之後的部分。
1 | class Solution: |
561. Array Partition
日期: 2024/12/24 | 難度: Easy | 分類: 陣列、排序
題目說明
把 2n 個整數兩兩配對,使所有對的最小值之和最大。
解題邏輯
排序後取奇數索引(0,2,4…)的元素之和,因為排序後相鄰配對使小值最大化。
1 | class Solution: |
572. Subtree of Another Tree
日期: 2025/01/13 | 難度: Easy | 分類: 樹、遞迴
題目說明
判斷 subRoot 是否為 root 的子樹。
解題邏輯
對 root 的每個節點,判斷以該節點為根的子樹是否與 subRoot 相同(用 isSameTree 的邏輯),遞迴檢查左右子樹。
1 | class Solution: |
575. Distribute Candies
日期: 2024/12/26 | 難度: Easy | 分類: 雜湊集合
題目說明
Alice 有 n 顆糖(n 為偶數),要分一半給哥哥,她想要儘量多種類,求她能得到的最多種類數。
解題邏輯
種類數 = min(不同糖的種類數, n//2),用 set 去重取種類數。
1 | class Solution: |
581. Shortest Unsorted Continuous Subarray
日期: 2025/01/05 | 難度: Medium | 分類: 陣列、排序
題目說明
找出最短的連續子陣列,使排序後整個陣列有序。
解題邏輯
比較原陣列和排序後的陣列,找出第一個和最後一個不同的位置,兩者之間的長度就是答案。
1 | class Solution: |
637. Average of Levels in Binary Tree
日期: 2025/01/13 | 難度: Easy | 分類: 樹、BFS
題目說明
回傳二元樹每層節點的平均值。
解題邏輯
BFS 層序遍歷,每層計算平均值。
1 | class Solution: |
643. Maximum Average Subarray I
日期: 2025/02/05 | 難度: Easy | 分類: 滑動視窗
題目說明
找長度為 k 的連續子陣列的最大平均值。
解題邏輯
固定大小的滑動視窗:先計算前 k 個元素的和,然後逐步移動視窗(加新去舊),維護最大和。
1 | class Solution: |
704. Binary Search
日期: 2024/12/20 | 難度: Easy | 分類: 二分搜尋
題目說明
在已排序陣列中找目標值的索引,找不到回傳 -1。
解題邏輯
標準二分搜尋:維護左右邊界,每次取中點比較縮小範圍。
1 | class Solution: |
724. Find Pivot Index
日期: 2024/12/20 | 難度: Easy | 分類: 前綴和
題目說明
找樞紐索引:左側所有元素之和等於右側所有元素之和。
解題邏輯
n 從總和開始每次扣當前元素(= 右側和),s 累積(= 左側和),相等時找到樞紐。
1 | class Solution: |
772. Basic Calculator III
日期: 2024/12/18 | 難度: Hard | 分類: Stack、Shunting Yard
題目說明
實作完整計算機,支援 +、-、*、/ 及括號(224 + 227 的合體)。
解題邏輯
Shunting Yard 演算法:中綴轉 RPN 再計算。負號在開頭或括號後補 0-,利用優先級字典 d 控制運算子 pop 時機。
1 | class Solution: |
790. Domino and Tromino Tiling
日期: 2025/02/18 | 難度: Medium | 分類: 動態規劃
題目說明
用 2×1 的多米諾骨牌和 L 形的 Tromino 鋪滿 2×n 的格子,有幾種方法?結果對 10⁹+7 取模。
解題邏輯
DP 遞推:f[i] = f[i-1]*2 + f[i-3](預先計算好 1001 個值),利用滾動方式求解。
1 | f = [0] * 1001 |
872. Leaf-Similar Trees
日期: 2025/02/24 | 難度: Easy | 分類: 樹、DFS
題目說明
判斷兩棵二元樹的葉節點序列(從左到右)是否相同。
解題邏輯
DFS 收集每棵樹的葉節點序列(先左後右),比較兩個序列是否相等。
1 | class Solution: |
875. Koko Eating Bananas
日期: 2025/01/21 | 難度: Medium | 分類: 二分搜尋
題目說明
Koko 在 h 小時內吃完所有香蕉堆,求每小時吃的最小速度 k。
解題邏輯
二分搜尋答案範圍 [1, max(piles)]:對每個速度 mid,計算需要的小時數,若超過 h 則加速(left 右移),否則嘗試更慢(right 左移)。
1 | class Solution: |
1004. Max Consecutive Ones III
日期: 2025/02/18 | 難度: Medium | 分類: 滑動視窗
題目說明
最多可以翻轉 k 個 0,找最長的全 1 子陣列。
解題邏輯
滑動視窗:c 計算視窗內 0 的個數,超過 k 時從左收縮(若移除的是 0 則 c–),持續更新最大視窗長度。
1 | class Solution: |
1008. Construct Binary Search Tree from Preorder Traversal
日期: 2025/02/18 | 難度: Medium | 分類: 樹、BST
題目說明
給一個 BST 的前序遍歷陣列,重建該 BST。
解題邏輯
遞迴插入:對每個新值,從根開始比較,大於當前節點往右插,小於往左插。依序從前序陣列取值插入即可。
1 | class Solution: |
1207. Unique Number of Occurrences
日期: 2025/02/19 | 難度: Easy | 分類: 雜湊表
題目說明
判斷陣列中每個值的出現次數是否各不相同。
解題邏輯
Counter 取得各值頻次,比較頻次列表的長度和頻次集合的長度,相等則各不相同。
1 | class Solution: |
1295. Find Numbers with Even Number of Digits
日期: 2024/12/20 | 難度: Easy | 分類: 陣列
題目說明
找出陣列中位數為偶數的整數個數。
解題邏輯
轉字串取長度,篩選偶數長度的計數。
1 | class Solution: |
1365. How Many Numbers Are Smaller Than the Current Number
日期: 2024/12/21 | 難度: Easy | 分類: 排序、計數排序
題目說明
對每個元素計算有多少其他元素比它小。
解題邏輯 — 方法一(計數排序)
長度 101 的計數陣列,前綴和即為比當前值小的元素個數。
解題邏輯 — 方法二(排序 + index)
排序後每個元素第一次出現的索引即為答案。
1 | # 方法一 |
1372. Longest ZigZag Path in a Binary Tree
日期: 2025/02/24 | 難度: Medium | 分類: 樹、DFS
題目說明
找二元樹中最長的鋸齒路徑(交替向左向右),回傳路徑中的節點數減 1。
解題邏輯
DFS 傳遞 (left_len, right_len):往左走時 right_len = left_len + 1,往右走時 left_len = right_len + 1,持續更新全域最大值。
1 | class Solution: |
1448. Count Good Nodes in Binary Tree
日期: 2025/02/24 | 難度: Medium | 分類: 樹、DFS
題目說明
「好節點」定義為從根到該節點的路徑上,沒有比它更大的節點。計算樹中好節點的數量。
解題邏輯
DFS 傳遞路徑上的最大值,每個節點若 ≥ 路徑最大值則為好節點,計數加 1。
1 | class Solution: |
1456. Maximum Number of Vowels in a Substring of Given Length
日期: 2025/02/18 | 難度: Medium | 分類: 滑動視窗
題目說明
給字串 s 和整數 k,找長度為 k 的子字串中母音字母的最多個數。
解題邏輯
固定大小滑動視窗:先計算前 k 個字元的母音數,再移動視窗加新去舊,更新最大值。
1 | class Solution: |
1657. Determine if Two Strings Are Close
日期: 2025/02/19 | 難度: Medium | 分類: 字串、雜湊表
題目說明
兩個字串「接近」的條件:可以通過交換字元位置或交換兩種字元的所有出現來互相轉換。
解題邏輯
兩個條件:(1) 兩字串包含的字元種類相同;(2) 兩字串的字元頻次多重集合相同(sorted 頻次列表相等)。
1 | class Solution: |
1679. Max Number of K-Sum Pairs
日期: 2025/02/05 | 難度: Medium | 分類: 雜湊表、雙指針
題目說明
每次選兩個數使其和為 k 並移除,最多能做幾次?
解題邏輯
Counter 記錄頻次,對每個數 n,看 k-n 是否有剩餘,有則配對(兩者各減 1),累計次數。
1 | class Solution: |
1748. Sum of Unique Elements
日期: 2024/12/20 | 難度: Easy | 分類: 雜湊表
題目說明
回傳陣列中只出現一次的元素的總和。
解題邏輯
Counter 篩選出現次數為 1 的元素加總。
1 | class Solution: |
1768. Merge Strings Alternately
日期: 2025/02/03 | 難度: Easy | 分類: 字串、雙指針
題目說明
交替合併兩個字串(word1[0], word2[0], word1[1], word2[1]…),若一個較長則將其剩餘部分接在末尾。
解題邏輯
zip 配對取出各自字元交替連接,再接上較長字串的剩餘部分。
1 | class Solution: |
2114. Maximum Number of Words Found in Sentences
日期: 2024/12/20 | 難度: Easy | 分類: 字串
題目說明
找句子陣列中單字數最多的句子,回傳最大單字數。
解題邏輯
對每個句子 split() 後取長度,找最大值。
1 | class Solution: |
2215. Find the Difference of Two Arrays
日期: 2025/02/19 | 難度: Easy | 分類: 雜湊集合
題目說明
給兩個陣列,回傳 [在 nums1 但不在 nums2 的元素, 在 nums2 但不在 nums1 的元素]。
解題邏輯
轉成集合後用集合差運算,去重後轉回列表。
1 | class Solution: |
3886. Button With Longest Time
日期: 2024/12/15 | 難度: Medium | 分類: 模擬
題目說明
給按鈕事件列表(每個事件含按鈕索引和時間),找出按下後持續時間最長的按鈕,相同時取索引最小的。
解題邏輯
維護上一事件時間 io,計算每次時間差,字典記錄每個按鈕的最長時間差,最後找最大值對應的最小索引。
1 | class Solution: |
📚 APCS 歷屆考題
APCS(Advanced Placement Computer Science)台灣程式能力檢定,考題涵蓋觀念題與實作題。
題目來自於ZeroJudge
c462. 交錯字串
日期: 2017/10 | 難度: Medium | 分類: 字串處理
題目說明
給整數 k 與字串 s(只含大小寫英文字母)。找出最長連續子字串,滿足「k-交錯」條件:可分成數段,每段正好 k 個相同大小寫,且相鄰段大小寫不同(輸出長度,無符合則0)。
解題邏輯
先把 s 轉成 +1(大寫)/-1(小寫)陣列,對每個起點 i,用 ix=i+k 往右擴展:用狀態機 j 檢查每段 sum 是否達到 ±k 並切換狀態,更新最大有效長度。
1 | k=int(input()) |
i400. 字串解碼
日期: 2022/6 | 難度: Medium | 分類: 模擬 / 字串
題目說明
給 m 行長度 n 的 01 字串(加密層)+ 一個長度 n 的加密字串 s。從最後一行開始逆推,每層依「1」的數量奇偶,對 s 做特定重排/旋轉,直到恢復原始字串並輸出。
解題邏輯
從最後一行開始逆向處理:對當前 s 從後往前掃,’1’ 尾取、’0’ 頭取,再依 1 的數量奇偶決定是否中間旋轉,更新 s 並 pop 該層,重複直到所有層處理完。
1 | m, n = map(int, input().split()) |
m931. 遊戲選角
日期: 2024/1 | 難度: Easy | 分類: 排序 / 模擬
題目說明
輸入 n 個角色(每個有攻擊力 x、防禦力 y),能力值 = x² + y²。輸出能力值第二大的角色的 x y(保證所有能力值不同)。
解題邏輯
把每個點存成 list,計算 dist² 放 dict(key=索引),用 sorted(key=d.get, reverse=True) 取出第二大索引,直接印出對應的 x y。
1 | n=int(input()) |
m932. 蜜蜂觀察
日期: 2024/1 | 難度: Easy | 分類: 模擬
題目說明
m×n 字母蜂巢(大寫/小寫視為不同),蜜蜂從左下角開始,給一系列移動指令(0~5 六種方向)。撞牆壁/邊界不動。收集走過的所有格字母成字串,最後輸出字串 + 不同字母種類數。
解題邏輯
grid 讀成 list,起點 y=a-1、x=0,用 if 判斷每個指令的邊界條件移動後 s += 當前格字母,最後 print(s) 與 len(set(s))。
1 | a,b,c=map(int,input().split()) |
o712. 蒐集寶石
日期: 2024/10 | 難度: Medium | 分類: 模擬
題目說明
M×N 地圖(數字=寶石數,-1=牆),機器人從 (r,c) 開始朝右。當前格 >0 就撿1顆(格-1、score+1),score 是 k 的倍數就右轉90°。若前方是牆/出界就繼續右轉,直到能走。當前格變0就停止,輸出總撿寶石數。
解題邏輯
外 while(當前格 !=0):撿寶石、計數+1、若 s%k==0 就 f=(f+1)%4。內 while 用四個方向 if 檢查下一格是否可走,不能走就繼續轉向,直到移動成功。
1 | M, N, k, r, c = map(int, input().split()) |
q836. 小心陷阱
日期: 2025/6 | 難度: Easy | 分類: 模擬
題目說明
數線位置從0開始,初始生命 k。每次以當前生命 v 往右跳 v 格(p += v),落地後若 p 是 x1 倍數扣 y1、是 x2 倍數扣 y2。生命 ≤0 停止,輸出最終位置 p。
解題邏輯
while k>0:p += k(當前生命跳),然後檢查 p%x1==0 或 %x2==0 就從 k 扣對應 y,直到 k≤0 輸出 p。
1 | k=int(input()) |
q837. 轉盤得分
日期: 2025/6 | 難度: Medium | 分類: 模擬 / 陣列
題目說明
m 個長度 n 的字母轉盤,進行 k 輪操作。每輪給 m 個旋轉值,對每個轉盤旋轉後,每一直行取該行最多相同字母的出現次數,加總所有直行的 max 值得到該輪得分,最後輸出 k 輪總分。
解題邏輯
對 k 組 values,每組先對每行做 s = s[-p:] + s[:-p] 旋轉,再 zip(*l) 看每直行,用 max(i.count(j) for j in i) 累加到 ans。
1 | m,n,k=map(int,input().split()) |
q838. 貪心闖關
日期: 2025/6 | 難度: Medium | 分類: 貪心 / 堆疊
題目說明
n 關卡各有沙包數 l[i]。重複操作:選當前最少沙包的關卡,把它的沙包全部搬到下一個非空關卡,每搬1沙包得1分。算總得分。
解題邏輯
用 stack 模擬:遇到 x 時 while st and st[-1] <= x 就合併(ans += st[-1]、x += st[-1]、pop),若 x <= t 才 push。最後把剩餘 stack 全部加到 ans。
1 | n, t = map(int, input().split()) |
📊 leetcode題目總覽
| 題號 | 題目名稱 | 難度 | 日期 | 核心技巧 |
|---|---|---|---|---|
| 1 | Two Sum | Easy | 2025/02/05 | 雜湊表 |
| 3 | Longest Substring Without Repeating Characters | Medium | 2025/01/15 | 滑動視窗 |
| 9 | Palindrome Number | Easy | 2024/12/20 | 字串反轉 |
| 11 | Container With Most Water | Medium | 2025/02/05 | 雙指針 |
| 13 | Roman to Integer | Easy | 2024/12/21 | 字串映射 |
| 14 | Longest Common Prefix | Easy | 2024/12/21 | 字串 |
| 22 | Generate Parentheses | Medium | 2025/01/24 | 回溯 |
| 26 | Remove Duplicates from Sorted Array | Easy | 2024/12/15 | Set |
| 27 | Remove Element | Easy | 2024/12/22 | 雙指針 |
| 28 | Find the Index of First Occurrence | Easy | 2024/12/23 | 字串 |
| 36 | Valid Sudoku | Medium | 2025/01/16 | 雜湊集合 |
| 39 | Combination Sum | Medium | 2024/12/31 | 回溯 |
| 40 | Combination Sum II | Medium | 2024/12/31 | 回溯 |
| 43 | Multiply Strings | Medium | 2025/01/24 | 模擬乘法 |
| 46 | Permutations | Medium | 2025/01/03 | 回溯 |
| 47 | Permutations II | Medium | 2025/01/04 | 回溯 |
| 53 | Maximum Subarray | Medium | 2024/12/16 | Kadane’s |
| 54 | Spiral Matrix | Medium | 2024/12/29 | 邊界模擬 |
| 55 | Jump Game | Medium | 2024/12/25 | 貪心 |
| 59 | Spiral Matrix II | Medium | 2025/01/21 | 邊界模擬 |
| 62 | Unique Paths | Medium | 2025/01/05 | DP |
| 63 | Unique Paths II | Medium | 2025/01/15 | DP |
| 67 | Add Binary | Easy | 2024/12/22 | 進位制轉換 |
| 70 | Climbing Stairs | Easy | 2024/12/17 | DP、費波那契 |
| 73 | Set Matrix Zeroes | Medium | 2024/12/29 | 矩陣模擬 |
| 75 | Sort Colors | Medium | 2025/01/21 | 三指針 |
| 77 | Combinations | Medium | 2024/12/30 | 回溯 |
| 78 | Subsets | Medium | 2024/12/30 | 回溯 |
| 88 | Merge Sorted Array | Easy | 2024/12/20 | 雙指針 |
| 90 | Subsets II | Medium | 2025/01/15 | 回溯 |
| 91 | Decode Ways | Medium | 2025/01/04 | DP |
| 100 | Same Tree | Easy | 2025/01/07 | 遞迴 |
| 101 | Symmetric Tree | Easy | 2025/01/07 | BFS |
| 102 | Binary Tree Level Order Traversal | Medium | 2025/01/14 | BFS |
| 104 | Maximum Depth of Binary Tree | Easy | 2025/01/07 | 遞迴 |
| 107 | Binary Tree Level Order Traversal II | Medium | 2025/01/14 | BFS |
| 111 | Minimum Depth of Binary Tree | Easy | 2025/01/07 | 遞迴 |
| 112 | Path Sum | Easy | 2025/01/08 | 遞迴 |
| 118 | Pascal’s Triangle | Easy | 2024/12/22 | DP |
| 119 | Pascal’s Triangle II | Easy | — | DP |
| 121 | Best Time to Buy and Sell Stock | Easy | 2024/12/16 | 貪心 |
| 122 | Best Time to Buy and Sell Stock II | Medium | 2025/01/15 | 貪心 |
| 136 | Single Number | Easy | 2024/12/17 | XOR |
| 137 | Single Number II | Medium | 2024/12/17 | 位元遮罩 |
| 150 | Evaluate Reverse Polish Notation | Medium | 2024/12/18 | Stack |
| 151 | Reverse Words in a String | Medium | 2025/01/24 | 字串 |
| 168 | Excel Sheet Column Title | Easy | 2025/01/02 | 進位制 |
| 189 | Rotate Array | Medium | 2024/12/15 | 切片 |
| 198 | House Robber | Medium | 2024/12/24 | DP |
| 202 | Happy Number | Easy | 2024/12/23 | 集合 |
| 205 | Isomorphic Strings | Easy | 2024/12/24 | 雜湊表 |
| 209 | Minimum Size Subarray Sum | Medium | 2025/01/21 | 滑動視窗 |
| 213 | House Robber II | Medium | 2024/12/25 | DP |
| 216 | Combination Sum III | Medium | 2025/01/04 | 回溯 |
| 219 | Contains Duplicate II | Easy | 2024/12/27 | 雜湊表 |
| 224 | Basic Calculator | Hard | 2024/12/18 | Stack |
| 226 | Invert Binary Tree | Easy | 2025/01/13 | 遞迴 |
| 227 | Basic Calculator II | Medium | 2024/12/18 | Stack |
| 240 | Search a 2D Matrix II | Medium | 2025/01/24 | 雙指針 |
| 242 | Valid Anagram | Easy | 2024/12/17 | Counter |
| 257 | Binary Tree Paths | Easy | 2025/01/09 | DFS |
| 263 | Ugly Number | Easy | 2025/01/03 | 數學 |
| 283 | Move Zeroes | Easy | 2024/12/16 | 陣列 |
| 290 | Word Pattern | Easy | 2024/12/28 | 雜湊表 |
| 300 | Longest Increasing Subsequence | Medium | 2025/01/05 | DP |
| 322 | Coin Change | Medium | 2025/01/24 | DP |
| 334 | Increasing Triplet Subsequence | Medium | 2025/02/03 | 貪心 |
| 338 | Counting Bits | Easy | 2025/01/02 | DP + 位元 |
| 342 | Power of Four | Easy | 2025/01/02 | 位元運算 |
| 344 | Reverse String | Easy | 2024/12/23 | 雙指針 |
| 345 | Reverse Vowels of a String | Easy | 2025/02/03 | 雙指針 |
| 350 | Intersection of Two Arrays II | Easy | 2024/12/15 | 雜湊表 |
| 371 | Sum of Two Integers | Medium | 2024/12/28 | 位元運算 |
| 383 | Ransom Note | Easy | 2025/01/03 | Counter |
| 387 | First Unique Character in a String | Easy | 2024/12/23 | Counter |
| 389 | Find the Difference | Easy | 2024/12/17 | ASCII |
| 392 | Is Subsequence | Easy | 2025/02/05 | 雙指針 |
| 404 | Sum of Left Leaves | Easy | 2025/01/09 | 遞迴 |
| 405 | Convert a Number to Hexadecimal | Easy | 2025/01/02 | 位元運算 |
| 409 | Longest Palindrome | Easy | 2024/12/27 | 計數 |
| 435 | Non-overlapping Intervals | Medium | 2025/01/05 | 貪心 |
| 437 | Path Sum III | Medium | 2025/02/24 | 前綴和 |
| 443 | String Compression | Medium | 2025/02/03 | 雙指針 |
| 448 | Find All Numbers Disappeared in an Array | Easy | 2024/12/27 | 標記法 |
| 463 | Island Perimeter | Easy | 2024/12/28 | 矩陣 |
| 476 | Number Complement | Easy | 2025/01/02 | 位元運算 |
| 494 | Target Sum | Medium | 2025/01/24 | DP |
| 496 | Next Greater Element I | Easy | 2024/12/28 | 單調堆疊 |
| 500 | Keyboard Row | Easy | 2024/12/27 | 集合 |
| 543 | Diameter of Binary Tree | Easy | 2025/01/13 | DFS |
| 556 | Next Greater Element III | Medium | 2024/12/28 | Next Permutation |
| 561 | Array Partition | Easy | 2024/12/24 | 排序 |
| 572 | Subtree of Another Tree | Easy | 2025/01/13 | 遞迴 |
| 575 | Distribute Candies | Easy | 2024/12/26 | 集合 |
| 581 | Shortest Unsorted Continuous Subarray | Medium | 2025/01/05 | 排序比較 |
| 637 | Average of Levels in Binary Tree | Easy | 2025/01/13 | BFS |
| 643 | Maximum Average Subarray I | Easy | 2025/02/05 | 滑動視窗 |
| 704 | Binary Search | Easy | 2024/12/20 | 二分搜尋 |
| 724 | Find Pivot Index | Easy | 2024/12/20 | 前綴和 |
| 772 | Basic Calculator III | Hard | 2024/12/18 | Shunting Yard |
| 790 | Domino and Tromino Tiling | Medium | 2025/02/18 | DP |
| 872 | Leaf-Similar Trees | Easy | 2025/02/24 | DFS |
| 875 | Koko Eating Bananas | Medium | 2025/01/21 | 二分搜尋 |
| 1004 | Max Consecutive Ones III | Medium | 2025/02/18 | 滑動視窗 |
| 1008 | Construct BST from Preorder Traversal | Medium | 2025/02/18 | BST |
| 1207 | Unique Number of Occurrences | Easy | 2025/02/19 | Counter |
| 1295 | Find Numbers with Even Number of Digits | Easy | 2024/12/20 | 字串轉換 |
| 1365 | How Many Numbers Are Smaller Than Current | Easy | 2024/12/21 | 計數排序 |
| 1372 | Longest ZigZag Path in a Binary Tree | Medium | 2025/02/24 | DFS |
| 1448 | Count Good Nodes in Binary Tree | Medium | 2025/02/24 | DFS |
| 1456 | Maximum Number of Vowels in a Substring | Medium | 2025/02/18 | 滑動視窗 |
| 1657 | Determine if Two Strings Are Close | Medium | 2025/02/19 | Counter |
| 1679 | Max Number of K-Sum Pairs | Medium | 2025/02/05 | Counter |
| 1748 | Sum of Unique Elements | Easy | 2024/12/20 | Counter |
| 1768 | Merge Strings Alternately | Easy | 2025/02/03 | 字串 |
| 2114 | Maximum Number of Words Found in Sentences | Easy | 2024/12/20 | split() |
| 2215 | Find the Difference of Two Arrays | Easy | 2025/02/19 | 集合 |
| 3886 | Button With Longest Time | Medium | 2024/12/15 | 模擬 |