LC-Reshape the Matrix

406 篇文章 0 订阅
69 篇文章 0 订阅

方法1:

class Solution(object):
    def matrixReshape(self, nums, r, c):
        """
        :type nums: List[List[int]]
        :type r: int
        :type c: int
        :rtype: List[List[int]]
        """
        len_1 = len(nums[0])
        len_2 = len(nums)
        count = len_1*len_2
        s = []
        ii = 0
        for i in range(0,len_2):
            for j in range(0,len_1):
                s.append(nums[i][j])
        if count < (r*c):
            return nums
        else:
            num1 = [([None] * c) for i in range(r)]

            for i in range(0,r):
                for j in range(0,c):
                    num1[i][j] = s[ii]
                    ii +=1

            return num1

Sol = Solution()
num_test = [[1,2],[3,4]]
print Sol.matrixReshape(num_test,1,4)

方法2:

def matrixReshape(self, A, r, c):
    if len(A) * len(A[0]) != r * c:
        return A

    vals = [val for row in A for val in row]
    ans = [[None] * c for i in range(r)]
    i = 0
    for r in range(r):
        for c in range(r):
            ans[r][c] = vals[i]
            i += 1
    return ans

0,第二种方法相对简单
1,这两种方法的思想是相类似的,但是方法2更为简洁。首先:
vals = [val for row in A for val in row],可以将一个二维数组转化为一个列表。

val = [[1,2],[3,4]]
vals = [val for row in val for val in row]
print vals

输出为[1,2,3,4]

其次,ans = [[None] * c for i in range(r)],创建一个r*c的二维矩阵,元素为[None]型,也可以换成其他值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值