1170.マトリックスの形を変える

1170.マトリックスの形を変える

中国人 英語

MATLABには、 'reshape'と呼ばれる非常に便利な関数があり、マトリックスを異なるサイズのマトリックスに再形成できますが、元のデータは保持されます。

最初に、2次元配列で表される行列と、それぞれ必要な再形成行列の行数と列数を表す2つの正の整数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はどちらも正の数です。

テストデータを入力(1行に1つのパラメーター) テストデータを理解するには
class Solution:
     "" "
     @param nums:List [List [ int ]] 
    @param r:整数
    @param c:整数
    @return:return List [List [ int ]]
     " ""
     '' '
     一般的なアイデア:
     1。最初に、res = []、l = []を初期化し、numsの次元、つまりlen(nums)とlen(nums [ 0 ])を取得し、r * cで、product> = r * cかどうかを判断します。マトリックスの形状を変更できることに注意してください。そうでない場合は、元のマトリックスを入力してください。
    2第一次元アレイ、即ち、= Lにスプライス。NUMS [...]の形で
     3が、RとCに応じて与えられた行列を、再構築できる場合、L循環される、=与えるcurrent_dic ] [、もし長さがcの場合、resに追加し、resの長さがrになるまで    分割し、最後にres '' '
 def matrixReshape(self、nums、r、c)を返し
     ます。= [] 
        current_dic = [] 
        L = [] 
如果不符合条件的话
        場合でlen(NUMS [ 0 ])* lenは(NUMS)<R * C:
             戻り  NUMS 
        
         I NUMS:
            l.extend(I) 
否则
        カラム:L 
            current_dic.append(カラム)
            場合 LEN(current_dic)== C:
                res.append(current_dic)
                current_dic = []
             場合 LEN(RES)== R:
                解像度を返す

 

 

おすすめ

転載: www.cnblogs.com/yunxintryyoubest/p/12685715.html
おすすめ