重塑矩陣(Reshape the Matrix)

虛擬碼


解題

566. Reshape the Matrix

題目說明

在 MATLAB 中,有一個方便的函數稱為,它可以將矩陣重塑為具有不同大小的新矩陣,以保留其原始數據。reshapem x nr x c
您將獲得一個矩陣和兩個整數,並表示所需重塑矩陣的行數和列數。m x nmatrc
重塑后的矩陣應以與原始矩陣相同的行遍歷順序填充原始矩陣的所有元素。
如果給定參數的操作是可能的且合法的,則輸出新的重塑矩陣;否則,輸出原始矩陣。reshape

Constraints:

  • m == mat.length
  • n == mat[i].length
  • 1 <= m, n <= 100
  • -1000 <= mat[i][j] <= 1000
  • 1 <= r, c <= 300

解法

第一種
Javascript

/**
* @param {number[][]} mat
* @param {number} r
* @param {number} c
* @return {number[][]}
*/
var matrixReshape = function(mat, r, c) {
var arr = mat.flat(); //合併(攤平)陣列回第一層
if (r * c != arr.length) return mat;

var res = [];
while (arr.length) {
res.push(arr.splice(0, c));
console.log(res);
}
return res;

};

[name=@denny0628] [time=Tue, Nov 23, 2022 14:45 PM] [color=#907bf7]