【力扣日記】566 重塑矩陣

題目描述

在MATLAB中,有一個非常有用的函數 reshape,它可以將一個矩陣重塑爲另一個大小不同的新矩陣,但保留其原始數據。

給出一個由二維數組表示的矩陣,以及兩個正整數r和c,分別表示想要的重構的矩陣的行數和列數。

重構後的矩陣需要將原始矩陣的所有元素以相同的行遍歷順序填充。

如果具有給定參數的reshape操作是可行且合理的,則輸出新的重塑矩陣;否則,輸出原始矩陣。

class Solution:
    def matrixReshape(self, nums: List[List[int]], r: int, c: int) -> List[List[int]]:

算法思路


        a,b=len(nums),len(nums[0])
        if a*b!=r*c:return nums
        ls=[nums[i][j]for i in range(a) for j in range(b)]
        ls.reverse()
        rec=[];tmp=[]
        for i in range(r):
            for j in range(c):
                tmp.append(ls.pop())
            rec.append(tmp[:])
            tmp.clear()
        return rec

優化

        a,b=len(nums),len(nums[0])
        if a*b!=r*c:return nums
        ls=[nums[i][j]for i in range(a) for j in range(b)]
        rec=[]
        for i in range(0,a*b,c):
            rec.append(ls[i:i+c])
        return rec
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章