↓快轉到主要內容
  1. LeetCode/

LeetCode 867: Transpose Matrix

·1 分鐘· ·
LeetCode Easy Array Matrix Simulation
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: easy 第一次嘗試:2022-09-17

  • 提交紀錄:Runtime Error ×2 → Accepted ×3

解題思路
#

轉置就是行列互換(Matrix 模板一):m × n 的矩陣變成 n × m,res[j][i] = matrix[i][j]。外層跑新的列數(原本的欄數),內層跑新的欄數(原本的列數)。Python 的 zip(*matrix) 剛好是轉置,但每一列是 tuple。

我的嘗試
#

前兩版的兩層迴圈範圍寫反了:第一版還把 matrix[0](一個 list)放進 range,第二版改成 len(matrix[0]) 但內外層對調,非正方形時 [[5, 0]] 超出範圍。最後用 zip(*matrix) 一行 AC。

正確解法
#

class Solution:
    def transpose(self, matrix: List[List[int]]) -> List[List[int]]:
        m, n = len(matrix), len(matrix[0])
        return [[matrix[i][j] for i in range(m)] for j in range(n)]

複雜度
#

時間 O(mn),空間 O(mn)(輸出)。

要特別避免的錯誤
#

  • 矩陣不一定是正方形,兩層迴圈的範圍要對應到新的大小。

面試口說整理
#

轉置就是行列互換,我建一個 n × m 的新矩陣,新的第 j 列第 i 欄放原本的第 i 列第 j 欄。時間 O(mn)。

相關文章

LeetCode 566: Reshape the Matrix
·1 分鐘
LeetCode Easy Array Matrix Simulation
LeetCode 566 解題筆記:元素總數不同就回傳原矩陣;否則第 k 個元素放到 (k // c, k % c)
LeetCode 832: Flipping an Image
·1 分鐘
LeetCode Easy Array Two-Pointers Bit-Manipulation Matrix
LeetCode 832 解題筆記:每一列先左右反轉再把 0、1 互換;可以用左右指針同時做
LeetCode 766: Toeplitz Matrix
·1 分鐘
LeetCode Easy Array Matrix
LeetCode 766 解題筆記:同一條對角線的元素都相同,等價於每一格都等於左上角那格
LeetCode 733: Flood Fill
·1 分鐘
LeetCode Easy Array Depth-First-Search Breadth-First-Search Matrix
LeetCode 733 解題筆記:從起點 DFS / BFS,四個方向上跟起點原本顏色相同的格子都換成新顏色;新舊顏色相同時直接回傳
LeetCode 661: Image Smoother
·1 分鐘
LeetCode Easy Array Matrix
LeetCode 661 解題筆記:每格取周圍 3 × 3 範圍內存在的格子平均,向下取整;結果要寫到新的矩陣
LeetCode 463: Island Perimeter
·1 分鐘
LeetCode Easy Array Depth-First-Search Breadth-First-Search Matrix
LeetCode 463 解題筆記:每格陸地貢獻 4 條邊,每跟上方或左方的陸地相鄰一次就少 2 條