LeetCode 867: 转置矩阵

148 阅读1分钟

给你一个二维整数数组 matrix, 返回 matrix转置矩阵

矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。img

示例 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]]

题解

题目的主要思路比较简单,就是横纵坐标置换。

动手的第一点我想到的是遍历所有的数,所以就要写一个二重for循环,写循环就要知道边界条件,即数组的横纵长度,所以我就声明了m,n。(最开始使用的var来声明的,但是看了官方题解后发现明显用const会更好)

写完循环后就只要在里面写个赋值语句就好了。

var transpose = function(matrix) {
    const m = matrix.length,n = matrix[0].length;
    transposed = new Array(n).fill(0).map(() => new Array(m).fill(0)); //创建二维数组
    for(let i=0;i<m;i++){
        for(let j=0;j<n;j++){
            transposed[j][i] = matrix[i][j];
        }
    }
    return transposed;
};

这题最开始并没有注意到矩阵的横纵坐标是可以不相等的,所以用的遍历i: 0->m 和 j:i ->n,所以出错了,然后看了解答才知道要重建一个数组才行。然后我又不知道js怎么创建数组。。就又去看了官方解。

箭头函数

箭头函数提供了一种更加简洁的函数书写方式。基本语法是:

参数 => 函数体表达式

例如:

var f = (a,b) => a+b; //当箭头函数没有参数或者有多个参数,要用 () 括起来。
f(6,2);  //8

fill()方法

fill() 方法用于将一个固定值替换数组的元素。

map()方法

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。