• 1170. 重塑矩阵


    1170. 重塑矩阵

    中文English

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

    先给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示所需重新整形矩阵的行数和列数。

    重新形成的矩阵需要用原始矩阵的所有元素以相同的行遍历顺序填充。

    如果使用给定参数的“重塑”操作是可能且合法的,则输出新的重新整形矩阵; 否则,输出原始矩阵。

    样例

    样例1:

    输入: 
    nums = 
    [[1,2],
     [3,4]]
    r = 1, c = 4
    输出: 
    [[1,2,3,4]]
    解释:
    行遍历的顺序为 [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, 100]。
    给出的r和c都为正数。

    输入测试数据 (每行一个参数)如何理解测试数据?
    class Solution:
        """
        @param nums: List[List[int]]
        @param r: an integer
        @param c: an integer
        @return: return List[List[int]]
        """
        '''
        大致思路:
        1.首先,初始化res = [],l = [],得到nums的维度,即len(nums)和len(nums[0]),和r*c进行判断,如果乘积>=r*c的话,则说明可以重塑矩阵,否则输入原矩阵。
        2.先将nums拼接成一维数组,即l = [...]的形式,
        3.如果可以重塑矩阵的话,根据给出的r和c,进行循环l,给出current_dic = [],如果长度为c的话,则append到res里面,一直到res长度为r的时候break,最后返回res
        '''
        def matrixReshape(self,nums,r,c):
            res = []
            current_dic = []
            l = []
    
            #如果不符合条件的话
            if len(nums[0])*len(nums) < r*c:
                return  nums
            
            for i in nums:
                l.extend(i)
    
            #否则
            for column in l:
                current_dic.append(column)
                if len(current_dic) == c:
                    res.append(current_dic)
                    current_dic = []
                if len(res) == r:
                    return res
  • 相关阅读:
    [tip]build x86+x64 parrelly for your VS solution
    float double的内存表示及比较大小的方法
    [Problem 13]欧拉
    Interface Project
    [复习]内存对齐
    [tip]VS online Gallery in Extention Manager
    [Problem 14]欧拉
    “火柴棍式”程序员面试题打破惯性思维
    [复习]时间复杂度及计算
    ModuleCatalog配置文件
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12685715.html
Copyright © 2020-2023  润新知