注:本文的实现思路主要是基于JS(JavaScript),涉及到的一些函数都是JS中的自带函数

题目描述

在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。

给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。

重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。

如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。


输入示例

输入:mat = [[1,2],[3,4]], r = 1, c = 4
输出:[[1,2,3,4]]
输入:mat = [[1,2],[3,4]], r = 2, c = 4
输出:[[1,2],[3,4]]

解题思路

这道题目使用最直接的数学逻辑进行求解即可。先把原始数组每一行一次拼接,形成一个一维数组,然后从这个一维数组中,依次截取c个元素,放到一个数组中,然后追加到存放结果的 result数组中即可。唯一需要注意的是,如果给定的r*c比原数组的元素个数多,就不能实现,直接返回原数组即可。

 var matrixReshape = function(mat, r, c) {const row_num = mat.lengthconst col_num = mat[0].length// 判断给定参数的 reshape 操作是可行且合理的,就是看变化前后元素个数是否一致if (row_num * col_num !== r * c) {return mat}// 创建一个临时数组,存在按行展开的一维数组let temp = []for (var i = 0; i < row_num; i++) {// 把每一行的元素都追加到 temp 中temp.push(...mat[i])}// 存放最后结果let result = []for (var i = 0; i < r; i++) {// 每次根据指定的列数,对 temp 进行截取, 放到 result 中result.push(temp.slice(i*c, (i+1)*c))}return result
};

力扣题目——566. 重塑矩阵相关推荐

  1. 力扣题目——429. N 叉树的层序遍历

    注:本文的代码实现使用的是 JS(JavaScript),为前端中想使用JS练习算法和数据结构的小伙伴提供解题思路. 描述 给定一个 N 叉树,返回其节点值的层序遍历.(即从左到右,逐层遍历). 树的 ...

  2. 力扣题目——637. 二叉树的层平均值

    注:本文的代码实现使用的是 JS(JavaScript),为前端中想使用JS练习算法和数据结构的小伙伴提供解题思路. 描述 给定一个非空二叉树, 返回一个由每层节点平均值组成的数组. 示例: 输入: ...

  3. 力扣题目——103. 二叉树的锯齿形层序遍历

    注:本文的代码实现使用的是 JS(JavaScript),为前端中想使用JS练习算法和数据结构的小伙伴提供解题思路. 描述 给定一个二叉树,返回其节点值的锯齿形层序遍历.(即先从左往右,再从右往左进行 ...

  4. 力扣题目——107. 二叉树的层序遍历 II

    注:本文的代码实现使用的是 JS(JavaScript),为前端中想使用JS练习算法和数据结构的小伙伴提供解题思路. 描述 给定一个二叉树,返回其节点值自底向上的层序遍历. (即按从叶子节点所在层到根 ...

  5. 力扣(566.303)补8.25

    566.重塑矩阵 做出来了,说不难也有一点点难,因为要找那个行列的关系,有点找规律的意思. class Solution { public int[][] matrixReshape(int[][] ...

  6. Leetcode刷题100天—566. 重塑矩阵(数组)—day25

    前言: 作者:神的孩子在歌唱 大家好,我叫运智 566. 重塑矩阵 难度简单233收藏分享切换为英文接收动态反馈 在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n ...

  7. C++算法学习(力扣:1091. 二进制矩阵中的最短路径)

    在一个 N × N 的方形网格中,每个单元格有两种状态:空(0)或者阻塞(1). 一条从左上角到右下角.长度为 k 的畅通路径,由满足下述条件的单元格 C_1, C_2, -, C_k 组成: 相邻单 ...

  8. leetcode-数据结构-566. 重塑矩阵

    问题分析 在 MATLAB 中,有一个非常有用的函数 reshape , 它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据. 给一个由二维数组 mat 表示的 ...

  9. 遍历矩阵每一行穷举_[LeetCode] 566. 重塑矩阵

    题目链接: https://leetcode-cn.com/problems/reshape-the-matrix 难度:简单 通过率:61.6% 题目描述: 在MATLAB中,有一个非常有用的函数 ...

最新文章

  1. AI靠语意理解把照片变抽象画,无需相应数据集,只画4笔也保留神韵,有毕加索内味儿了...
  2. 推荐一些不错的开源免费易上手的web前端框架
  3. GDOP定位算法的MATLAB仿真
  4. 系列教程丨用 Docker 探索开源软件 —— PostgreSQL(一)
  5. Windbg调优Kafka.Client内存泄露
  6. 液态金属和Liquidmetal公司
  7. 02.elasticsearch_read_write模型基础
  8. 【UOJ574】多线程计算【二元二项式反演】【定积分】【矩阵】【NTT 卷积】
  9. 亚马逊aws深度学习_AWS速查表:Amazon Web Services入门时首先要学习的5件事
  10. mysql查询女生的成绩_MySQL 统计查询实现代码
  11. linux mysql apache php 安装_linux下安装apache与php;Apache+PHP+MySQL配置攻略
  12. SQL Server创建复合索引时,复合索引列顺序对查询的性能影响
  13. 设计师提高效率必备的10大在线工具
  14. python官网下载非常慢解决方法
  15. 【科研】科研绘图作图画图
  16. go 1.16版本,go get用法介绍
  17. 霹雳吧啦Wz语义分割学习笔记P1
  18. java short 转char_byte,short,char的类型转换
  19. 星际争霸人族科技球介绍
  20. 海思开发板hi3559移植带opengl的qt并成功运行血泪史

热门文章

  1. python面板数据分析代码_用python预处理面板数据(续)
  2. 如何获得Android设备名称(ADB命令详细介绍)
  3. 线程库 c语言实现,130行C语言实现个用户态线程库——后续(一)
  4. mysql_affected_rows mysqli_关于mysqli_affected_rows()函数的详细介绍
  5. Django 之 Session的简单使用
  6. C#路径中获取文件全路径、目录、扩展名、文件名称
  7. 数据库优化的几种方法
  8. Steve Thair谈DevOps on Windows的演变与面临的挑战
  9. [20150610]使用物化视图同步数据.txt
  10. spring3的JAR包与注解学习笔记