566. 重塑矩阵

总结:
	fun1和fun2思想上是一致的,但是fun2的代码更加的简洁
	我最开始其实觉得挺难的,后面写了才发现就这样
	写之前尽量想好大致的思路,然后记下来
	这个题目就是你循环你的,我记录我的
def fun1(mat,r,c):
    '''
        首先,判断是否可以进行转换

        我的想法时,首先为了我写代码的方便,转化成一行的字符,不过感觉没必要了

        可以知道i+j=cur1+cur2
        所以就直接遍历原数组,加上两个cur1和cur2
    :param mat:
    :param r:
    :param c:
    :return:
    '''

    if len(mat) * len(mat[0]) != r * z:  # 无法重述
        return mat

    erwei = [[0 for i in range(z)] for j in range(r)]
    hang = 0
    lie = 0
    m = len(mat)
    n = len(mat[0])
    for i in range(m):
        for j in range(n):
            cur_item = mat[i][j]
            erwei[hang][lie] = cur_item
            lie += 1
            if lie % z == 0:
                lie = 0
                hang += 1
    return erwei

def fun2(mat,r,c):
    '''
        怎么说,官方的代码和我最开始想的前面是一致的哈哈哈
        就是压缩成一维数组(不过他并没有实际压缩)
        那么当前下标i时
            erwei[i//c][i%c]=mat[i//n][i%n]
            怎么理解?
            看我上面的代码
                if lie%c==0:
                    lie=0
                    hang+=1
            也就是说,hang=c的倍数,,lie等于余数
            所以自然就有了上面的简洁代码
    :param mat:
    :param r:
    :param c:
    :return:
    '''
    if len(mat) * len(mat[0]) != r * z:  # 无法重述
        return mat

    erwei = [[0 for i in range(z)] for j in range(r)]
    n = len(mat[0])
    m = len(mat)
    for i in range(m * n):
        erwei[i // z][i % z] = mat[i // n][i % n]
    return erwei
print(fun2())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值