LeetCode刷题复盘笔记—867. 转置矩阵

题目:867. 转置矩阵

给你一个二维整数数组 matrix, 返回 matrix 的转置矩阵 。
矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。


示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[[1,4,7],[2,5,8],[3,6,9]]
示例 2:
输入:matrix = [[1,2,3],[4,5,6]]
输出:[[1,4],[2,5],[3,6]]

一、开始的错误解法

class Solution {
public:
    vector> transpose(vector>& matrix) {
        int m,n;
        m=matrix.size();
        n=matrix[0].size();
        for(int i=0;i

错误原因:转置两次等于没转置

二、正确解法

C++版本:

class Solution {
public:
    vector> transpose(vector>& matrix) {
        int m,n;
        m=matrix.size();
        n=matrix[0].size();
        vector> res(n,vector(m,0));
        for(int i=0;i

Python版本:

class Solution(object):
    def transpose(self, matrix):
        m,n=len(matrix),len(matrix[0])
        res=[[0]*m for _ in range(n)]
        for i in range (m):
            for j in range (n):
                res[j][i]=matrix[i][j]
        return res

Python_Oneline第三方库版本:

class Solution(object):
    def transpose(self, matrix):
        import numpy as np
        # list转成numpy.array 然后调用转置将类型转回list
        return np.array(matrix).T.tolist()

总结

C++

二维vector初始化大小方法
名字为vec,大小为m*n,初始值为0的二维vector。
方法1:直接用初始化方法

 vector > vec(m, vector(n, 0));

方法2:用resize()来控制大小

vector > vec;
    vec.resize(n);//n行
    for (int i = 0; i < n; ++i){
        vec[i].resize(m);//每行为m列
    }

Python

二维数组初始化方法:
名字为matrix,大小为mn,初始值为0的二维数组。
matrix=[[0]
m for _ in range(n)]

你可能感兴趣的:(LeetCode刷题复盘笔记—867. 转置矩阵)