• 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
  • 相关阅读:
    【秋招必备】Redis面试题(2021最新版)
    【秋招必备】Spring Boot面试题(2021最新版)
    【秋招必备】Java基础知识面试题(2021最新版)
    用友二面:如何设计一个高可用、高并发秒杀系统
    万字长文,带你深入理解Java虚拟机!
    小米面试官:说说Spring源码里面的Bean的生命周期!
    苏宁易购三面:写一个脚本获取Linux系统CPU的详细信息,并说出原理!
    易错点。
    APP间传递消息
    KVC, KVO
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12685715.html
Copyright © 2020-2023  润新知