• 重塑矩阵


    在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。

    给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。

    重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。

    如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。

    示例 1:

    输入:mat = [[1,2],[3,4]], r = 1, c = 4
    输出:[[1,2,3,4]]
    示例 2:

    输入:mat = [[1,2],[3,4]], r = 2, c = 4
    输出:[[1,2],[3,4]]
     

    提示:

    m == mat.length
    n == mat[i].length
    1 <= m, n <= 100
    -1000 <= mat[i][j] <= 1000
    1 <= r, c <= 300

    func matrixReshape(mat [][]int, r int, c int) [][]int {
        m := len(mat)
        n := len(mat[0])
        if m * n != r * c {
            return mat
        }
        num :=  make([][]int, r)
        for i := 0; i < r; i++ {
            num[i] = make([]int, c)
        }
        for j := 0; j < m * n; j++ {
            num[j / c][j % c] = mat[j / n][j % n]
        }
    
        return num
    }
    class Solution:
        def matrixReshape(self, mat:[[int]], r: int, c: int) ->[[int]]:
            m, n = len(mat), len(mat[0])
    
            if m *n != r * c:
                return mat
            num = [[0] * c for _ in range(r)]
            for i in range(r*c):
                num[i // c][i % c] = mat[i // n][i % n]
    
            return num
    class Solution:
        def matrixReshape(self, mat: [[int]], r: int, c: int) -> [[int]]:
            lenMat = len(mat) * len(mat[0])
            lenNew = r * c
            if lenMat != lenNew:
                return mat
            mid = []
            for val in mat:
                mid+=val
            rLi = []
            target = lenNew
            while target > 0:
                rLi.append(mid[0:c])
                mid = mid[c:]
                target-=c
            return rLi

    结束!

  • 相关阅读:
    Python中的赋值与深浅拷贝
    Python面试题解析之前端、框架和其他
    Python面试题解析之数据库与缓存
    Python面试题解析之网络编程与并发
    Python面试题解析之Python基础篇
    2、使用rpm包安装grafana
    1、在Centos上安装Grafana
    MySQL所学所思所想
    运维感悟(信息大爆炸的时代,该学习什么来保持着我们的竞争力)
    C#.NET 中的 Timer 计时器及 3 种使用方法
  • 原文地址:https://www.cnblogs.com/aaronthon/p/16127803.html
Copyright © 2020-2023  润新知