Array 的幾個核心觀念:
1. In-place 操作:直接在原始陣列上修改,不建立新結構,節省空間從 O(N) → O(1)。
2. Two Pointers(雙指標):用兩個指標同時移動,常見於排序或區間問題。
3. Subarray(子陣列):連續的一段,如 [2,3,1,2,4] → [3,1,2]。
4. Subsequence(子序列):不必連續,如 [2,3,1,2,4] → [2,1,4]。
練習題: 可以思考 return 的條件,有些達到條件即可 return 不用跑完整個 loop (例如: 724. Find Pivot Index、66. Plus One)
2D Array 的概念:用 index A[i][j] 存取資料可分成:
1. 靜態陣列:長寬固定(例:int A[3][4])
2. 動態陣列:大小可變,可用 arr.append([7,7]) 新增列重點在於: 同時處理兩個維度的座標變化
思考方向:
1. 看 index 變化規律:
遇到明顯的「座標走法」題,優先觀察 i、j 的變化規律。
像對角線題可用 i+j、螺旋題要維護 top/bottom/left/right。
2. 想空間結構: 先畫出矩陣,再觀察 travel 順序,會比想演算法更快。
3. 規則統整: 大多 2D array 可歸納成 固定方向、循環走訪(Spiral、Snake、Zigzag)、逐層生成(Triangle、DP)
因為寫這些題目就好奇,實務應用可能在哪些情境
1. 影像處理:矩陣即像素,每種遍歷路徑都是一種「掃描方式」。
2. 資料壓縮與編碼:對角線或螺旋順序可壓平 2D 資料,同時保留鄰近關聯性。
3. 資料視覺化:螺旋或對角模式常用來轉換高維度資料到 1D 呈現。next : Linked List
Array 的幾個核心觀念:
1. In-place 操作:直接在原始陣列上修改,不建立新結構,節省空間從 O(N) → O(1)。
2. Two Pointers(雙指標):用兩個指標同時移動,常見於排序或區間問題。
3. Subarray(子陣列):連續的一段,如 [2,3,1,2,4] → [3,1,2]。
4. Subsequence(子序列):不必連續,如 [2,3,1,2,4] → [2,1,4]。
練習題: 可以思考 return 的條件,有些達到條件即可 return 不用跑完整個 loop (例如: 724. Find Pivot Index、66. Plus One)
2D Array 的概念:用 index A[i][j] 存取資料可分成:
1. 靜態陣列:長寬固定(例:int A[3][4])
2. 動態陣列:大小可變,可用 arr.append([7,7]) 新增列重點在於: 同時處理兩個維度的座標變化
思考方向:
1. 看 index 變化規律:
遇到明顯的「座標走法」題,優先觀察 i、j 的變化規律。
像對角線題可用 i+j、螺旋題要維護 top/bottom/left/right。
2. 想空間結構: 先畫出矩陣,再觀察 travel 順序,會比想演算法更快。
3. 規則統整: 大多 2D array 可歸納成 固定方向、循環走訪(Spiral、Snake、Zigzag)、逐層生成(Triangle、DP)
因為寫這些題目就好奇,實務應用可能在哪些情境
1. 影像處理:矩陣即像素,每種遍歷路徑都是一種「掃描方式」。
2. 資料壓縮與編碼:對角線或螺旋順序可壓平 2D 資料,同時保留鄰近關聯性。
3. 資料視覺化:螺旋或對角模式常用來轉換高維度資料到 1D 呈現。next : Linked List