2021/02/17 每日一题 重塑矩阵

LeetCode上重塑矩阵,简单难度重拳出击,记录下解题思路

其实思路不难,主要就2步

  1. 扁平化整个二维数组
  2. 根据传入的r,c来截取扁平化后的数组,并且重新组合

对nums进行遍历,每次遍历元素都通过concat连接到数组上,完成nums的扁平化,这里可以直接用ES6增加的flat()方法来直接扁平化,速度会快很多

上面扁平化完成之后就会得到一个一维数组,只需要按传入c的长度来截取数组,并且循环r次就能完成题目

这里使用的splice方法,会截取[0,c-1]区间的数组,并且还会修改原数组,正好满足需求,用这个可以让代码更少

var matrixReshape = function(nums, r, c) {
  // 用n来保存扁平化后的数组  
  let n = []
  // 遍历nums来扁平化数组
  nums.forEach((x,i) => {
    n = [].concat(n,x)
  })
  // 也可以flat
  //  let n = nums.flat()
  if(r*c !== n.length)  return nums
  // 存放结果
  let res = []
  // 根据传入的rc来重新填充二维数组
  for(let i = 0 ; i < r; i++) {
    // splice()方法会更改原数组
    // 每次截取[0,c]长度的数组,放入res
    res.push(n.splice(0,c))
  }
  return res
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容