当前位置: 首页 > news >正文

数组练习 Leetcode 566.重塑矩阵

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

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

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

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

示例 1:

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

示例 2:

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

提示:

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

题意:给定一个二维数组a,根据给定行长列长创建新的二维数组b,将a的元素按需存入b中

解题思路:

我们要做的事情就是:

  • 将二维数组 nums\textit{nums}nums 映射成一个一维数组;

  • 将这个一维数组映射回 rrr 行 ccc 列的二维数组。

具体实现

  • 首先将二维数组映射成[0,m*n)]的每一个整数
  • 当前的映射为 (i,j)→i×n+j
  • 同样的,我们可以将元素映射到矩阵中的下标
    i = x / n;
    j = x % n;
代码如下
class Solution {
public:vector<vector<int>> matrixReshape(vector<vector<int>>& mat, int r, int c) {int m = mat.size();int n = mat[0].size();//判断两个数组空间是否相同if(m * n != r * c) return mat;vector<vector<int>> v(r,vector<int>(c));for(int i = 0;i < m * n;i ++){v[i / c][i % c] = mat[i / n][i % n];}return v;}
};

http://www.lryc.cn/news/283465.html

相关文章:

  • Linux centos中find命令的多种用途:按照具体应用来详细说明find的用法举例
  • 服务器数据恢复—OceanStor存储raid5热备盘同步数据失败的数据恢复案例
  • Xline v0.6.1: 一个用于元数据管理的分布式KV存储
  • 【CSS】解决height = line-height 文字不垂直居中(偏上、偏下)的问题
  • 天津想转行学python培训班靠谱吗?
  • (C语言)冒泡排序
  • 怎么样的布局是符合可制造性的PCB布局?
  • 第28关 k8s监控实战之Prometheus(九)
  • 安全防御之可信计算技术
  • FPGA引脚物理电平(内部资源,Select IO)-认知2
  • PBR材质纹理下载
  • mac PyCharm 使用conda环境
  • 10个常用的正则表达式
  • 对一手游的自定义 luajit 字节码的研究
  • 1125. 牛的旅行 (Floyd算法,最短路)
  • oracle “Interested Transaction List”(ITL)的概念
  • kali下-MSF-ftp_login模块破解FTP账号及密码
  • ELK之Filebeat输出日志格式设置及输出字段过滤和修改
  • 【开源】基于JAVA的河南软件客服系统
  • 基于SpringBoot的社区帮扶对象管理系统
  • uniapp踩坑之项目:canvas第一次保存是空白图片
  • es-删除字段-实测
  • 24秋招,百度测试开发工程师三面
  • YOLOv8改进 | 主干篇 | 低照度增强网络PE-YOLO改进主干(改进暗光条件下的物体检测模型)
  • 【VUE】记录一次 VUE中配置生产环境和开发环境方法
  • tessreact训练字库
  • 超时配置(OpenFeign)
  • C++设计模式(李建忠)笔记2
  • 【机器学习】DBSCAN算法
  • Uniapp软件库源码-全新带勋章等