专栏首页学习有记[LeetCode Python3]566. Reshape the Matrix(重塑矩阵)

[LeetCode Python3]566. Reshape the Matrix(重塑矩阵)

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

给出一个由二维数组表示的矩阵,以及两个正整数rc,分别表示想要的重构的矩阵的行数和列数。

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

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

示例 1:

输入: 
nums = 
[[1,2],
 [3,4]]
r = 1, c = 4
输出: 
[[1,2,3,4]]
解释:
行遍历nums的结果是 [1,2,3,4]。新的矩阵是 1 * 4 矩阵, 用之前的元素值一行一行填充新矩阵。

示例 2:

输入: 
nums = 
[[1,2],
 [3,4]]
r = 2, c = 4
输出: 
[[1,2],
 [3,4]]
解释:
没有办法将 2 * 2 矩阵转化为 2 * 4 矩阵。 所以输出原矩阵。

注意:

  1. 给定矩阵的宽和高范围在 [1, 100]。
  2. 给定的 r 和 c 都是正数。

思路:重塑矩阵前后元素个数相同,下面是Python解题代码。

class Solution:
    def matrixReshape(self, nums, r, c):
        """
        :type nums: List[List[int]]
        :type r: int
        :type c: int
        :rtype: List[List[int]]
        """
        rr = len(nums)
        cc = len(nums[0])
        retl = []
        if rr * cc < r * c:
            return nums
        else:
            t = []
            for i in range(rr):
                for j in range(cc):
                    t.append(nums[i][j])
            m = 0
            for i in range(r):
                retl.append(t[m:m + c])
                m += c
        return retl

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 2018 蓝桥杯省赛 B 组模拟赛(五)题目及解析

    Woodson
  • SQL Server 代理进阶 - Level 2 :作业步骤和子系统

    Woodson
  • Python和SQL Server 2017的强大功能

    Woodson
  • P2258 子矩阵

    题目描述 给出如下定义: 子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与列的相对顺序)被称为原矩阵的一个子矩阵。 例如,下面左图中选取...

    attack
  • 最先进的Sparse直接求解器

    作者:Matthias Bollhöfer, Olaf Schenk, Radim Janalík, Steve Hamm, Kiran Gullapalli

    罗大琦
  • 使用矩阵运算驱动神经网络数据加工链

    望月从良
  • 《C++Primer》第八章 IO库

    前面提到的IO类型和对象都是操纵char数据的,并且都是关联到用户的控制台窗口的。我们还有其他IO需求:

    TOMOCAT
  • Redis集群实现布隆过滤器

    封面为好友拍摄的照片,想查看更多微信公众号搜索:JavaBoy王皓或csdn博客搜索:TenaciousD

    胖虎
  • Android开发中RelativeLayout相对布局

            RelativeLayout布局是Android界面布局中应用最广也最强大的一种布局,其不仅十分灵活,可以解决开发中各种界面布局需求,同时也很方...

    珲少
  • DVWA笔记(六)----File Inclusion

    丢到里面直接解密就好了,如果解不出来,直接换一个md5值,或者设置密码为空密码也成。

    用户5878089

扫码关注云+社区

领取腾讯云代金券