JS
/**
* @param {number[][]} nums
* @param {number} r
* @param {number} c
* @return {number[][]}
*/
var matrixReshape = function(nums, r, c) {
let flatres = nums.flat(Infinity);
let cache =[];
let res = [];
if(r*c!=flatres.length){
return nums;
}else{
for(let j =0;j<r;j++){
for(let i =0;i<c;i++){
cache.push(flatres.shift());
}
res[j]=cache;
cache=[];
}
return res;
}
};
思路:先flat之后查一下数组元素个数,比一下如果不能等分直接返回原数组,如果可分,用双层循环来构造目标数组,r个数组,每个数组中c个元素,用了一个cache数组来承接。
趁机复习了一波flat和用reduce手写flat
时间复杂度On2
空间复杂度On