当前位置: 首页 > 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;}
};

相关文章:

  • Pytest插件pytest-django让Django测试更高效
  • Spring data都包含哪些内容
  • 100天精通Python(实用脚本篇)——第113天:基于Tesseract-OCR实现OCR图片文字识别实战
  • 蓝桥杯官网填空题(海盗与金币)
  • 【C++】类和对象
  • MyBatis 的XML实现方法(JAVA)
  • Android 基础技术——addView 流程
  • vue+elenemt分页+springboot
  • 幻读是什么,用什么隔离级别可以防止幻读?
  • 解决Windows下VSCode控制台乱码问题
  • 一文了解GeoTrust SSL证书
  • Win10/11中VMware Workstation设置网络桥接模式
  • 【Linux】基本指令收尾
  • Win10下在Qt项目中配置SQlite3环境
  • Conmi的正确答案——eclipse C/C++显示“未解析的包含:<xxx.h>”/“Unresolved inclusion: <xxx.h>”
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Android交互
  • Elasticsearch 参考指南(升级前重新索引)
  • Javascript编码规范
  • Javascript弹出层-初探
  • nginx 配置多 域名 + 多 https
  • October CMS - 快速入门 9 Images And Galleries
  • SAP云平台里Global Account和Sub Account的关系
  • SpingCloudBus整合RabbitMQ
  • STAR法则
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • yii2权限控制rbac之rule详细讲解
  • 初识 webpack
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 前端路由实现-history
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 手写双向链表LinkedList的几个常用功能
  • 算法-插入排序
  • 问题之ssh中Host key verification failed的解决
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 智能合约开发环境搭建及Hello World合约
  • hi-nginx-1.3.4编译安装
  • Java总结 - String - 这篇请使劲喷我
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #微信小程序:微信小程序常见的配置传旨
  • ${ }的特别功能
  • (a /b)*c的值
  • (day6) 319. 灯泡开关
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (LeetCode C++)盛最多水的容器
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (笔试题)合法字符串
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (原创) cocos2dx使用Curl连接网络(客户端)