Leetcode-566 重塑矩阵

作者: itbird01 | 来源:发表于2021-09-16 10:29 被阅读0次

566. 重塑矩阵

解题思路

第一种解法,以空间换时间,时间复杂度是O(mn),空间复杂度是O(mn)

  1. 首先如果m * n != r * c,则无法进行矩阵的重塑,所以直接返回mat
  2. 先将m * n的二维数组转换为一维数组,存储数据
  3. 创建结果二维数据result[r][c],遍历一维数组,进行数据赋值
    思考:第一种解法,时间上遍历了两次二维数据,空间上使用了一维数组的转换,不可以直接从输入二维数组转换为目标二维数组吗?

第二种解法
1.不再转换为一维数组,直接遍历输入的二维数组,对目标二维数组进行赋值

解题遇到的问题

1.无

后续需要总结学习的知识点

1.在 MATLAB 中,函数 reshape的实现逻辑是怎么样的?

##解法1
class Solution {
    public int[][] matrixReshape(int[][] mat, int r, int c) {
        int m = mat.length;
        int n = mat[0].length;
        if (m * n != r * c) {
            return mat;
        } else {
            int[][] result = new int[r][c];
            int[] a = new int[m * n];
            int k = 0;
            for (int i = 0; i < m; i++) {
                for (int j = 0; j < n; j++) {
                    a[k] = mat[i][j];
                    k++;
                }
            }
            k = 0;
            for (int i = 0; i < r; i++) {
                for (int j = 0; j < c; j++) {
                    result[i][j] = a[k];
                    k++;
                }
            }
            return result;
        }
    }
}

##解法2
class Solution {
    public int[][] matrixReshape(int[][] mat, int r, int c) {
        int m = mat.length;
        int n = mat[0].length;
        if (m * n != r * c) {
            return mat;
        } else {
            int[][] result = new int[r][c];
            int rtemp = 0;
            int ctemp = 0;

            for (int i = 0; i < m; i++) {
                for (int j = 0; j < n; j++) {
                    result[rtemp][ctemp] = mat[i][j];
                    ctemp++;
                    if (ctemp == c) {
                        rtemp++;
                        ctemp = 0;
                    }
                }
            }
            return result;
        }
    }
}

相关文章

  • Leetcode-566 重塑矩阵

    566. 重塑矩阵[https://leetcode-cn.com/problems/reshape-the-ma...

  • 重塑矩阵

    在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始...

  • 小白的机器学习实战——向量,矩阵和数组

    创建矩阵 向量 计算平均值,方差和标准偏差 重塑矩阵 矩阵加减法 对矩阵元素进行操作 创建稀疏矩阵 描述一个矩阵 ...

  • 刷leetCode算法题+解析(三十一)

    重塑矩阵 题目:在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩...

  • 2021.2.17每日一题

    566. 重塑矩阵[https://leetcode-cn.com/problems/reshape-the-ma...

  • 566. 重塑矩阵

    先把代码贴上来。 思路很朴素,首先判断能不能转换,不能转换的话,就直接结束了。能转换的话就是首先申请一个r维向量。...

  • 566-重塑矩阵

    把矩阵先转换成一行,再根据行数、列数进行转换。复杂度有点高。 大佬实现: 更简洁,直接定义一个满足条件的空的 ve...

  • numpy -- 数组转置和轴对换

    重塑 转置 矩阵相乘 transpose 详细解释: arr数组的内容为 - a[0][0] = [0, 1, 2...

  • Reshape对矩阵进行重塑

    Reshape命令 一般需要对矩阵进行重新分配行列,如转置等。需要如下命令: 解释:将 list 中的元素排列成一...

  • Leetcode_566 Reshape the Matrix

    在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始...

网友评论

    本文标题:Leetcode-566 重塑矩阵

    本文链接:https://www.haomeiwen.com/subject/quxfgltx.html