数组练习 Leetcode 566.重塑矩阵

news2025/1/10 5:58:31

在 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.coloradmin.cn/o/1394506.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用docker部署RStudio容器并结合内网穿透实现公网访问

文章目录 前言1. 安装RStudio Server2. 本地访问3. Linux 安装cpolar4. 配置RStudio server公网访问地址5. 公网远程访问RStudio6. 固定RStudio公网地址 前言 RStudio Server 使你能够在 Linux 服务器上运行你所熟悉和喜爱的 RStudio IDE&#xff0c;并通过 Web 浏览器进行访问…

Java多线程并发篇----第二十一篇

系列文章目录 文章目录 系列文章目录前言一、Java 中的阻塞队列二、ArrayBlockingQueue(公平、非公平)三、LinkedBlockingQueue(两个独立锁提高并发)四、PriorityBlockingQueue(compareTo 排序实现优先)前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默…

瑞_Java开发手册_(六)工程结构

文章目录 工程结构的意义(一) 应用分层(二) 二方库依赖(三) 服务器 &#x1f64a;前言&#xff1a;本文章为瑞_系列专栏之《Java开发手册》的工程结构篇&#xff0c;主要介绍应用分层、二方库依赖、服务器。由于博主是从阿里的《Java开发手册》学习到Java的编程规约&#xff0c…

44.5K Star,简单易用自动化运维监控工具

Hi&#xff0c;骚年&#xff0c;我是大 G&#xff0c;公众号「GitHub指北」会推荐 GitHub 上有趣有用的项目&#xff0c;一分钟 get 一个优秀的开源项目&#xff0c;挖掘开源的价值&#xff0c;欢迎关注。 今天介绍一个开源的自动化运维监控工具&#xff0c;它是一个轻量的开源…

【Vue3】2-13 : 章节总结

本书目录&#xff1a;点击进入 一、总结内容 二、习题 2.1 【选择题】以下Vue指令中&#xff0c;哪些指令具备简写方式&#xff1f; 2.2 【编程题】以下Vue指令中&#xff0c;哪些指令具备简写方式&#xff1f; &#xff1e; 效果 &#xff1e; 代码 一、总结内容 了解核…

使用C#操作文件:一个实际案例——替换文件中的IP地址

标题&#xff1a; 使用C#操作文件&#xff1a;一个实际案例——替换文件中的IP地址 介绍&#xff1a; 欢迎阅读我的最新博客&#xff01;今天&#xff0c;我们将探讨如何使用C#来处理一个实际的编程挑战&#xff1a;读取一个配置文件并替换其中的IP地址。这是一个非常常见的…

【NCRE 二级Java语言程序设计04】二级Java考试应用软件使用

目录 前言一、软件介绍和下载1.软件介绍和下载2.下载软件3.下载使用说明和示例教程 二、本地练习环境搭建1.解压启动2.自建Java应用程序3.Hello入门程序 三、NetBeans一般配置1.代码模板2.字体和颜色3.快捷键映射 总结 前言 &#x1f4dc;本专栏主要是分享自己备考全国计算机二…

使用Portainer创建Nginx容器并部署本地网站结合内网穿透实现公网访问

文章目录 前言1. 安装Portainer1.1 访问Portainer Web界面 2. 使用Portainer创建Nginx容器3. 将Web静态站点实现公网访问4. 配置Web站点公网访问地址4.1公网访问Web站点 5. 固定Web静态站点公网地址6. 固定公网地址访问Web静态站点 前言 Portainer是一个开源的Docker轻量级可视…

力扣309. 买卖股票的最佳时机含冷冻期(动态规划,Java C++解法)

Problem: 309. 买卖股票的最佳时机含冷冻期 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 Problem: 714. 买卖股票的最佳时机含手续费 该题目可以看作是上述题目的改编&#xff0c;该题目添加了一个冷冻期使得动态转移方程更加复杂&#xff0c;具体思路如下&#xf…

Kylin 安装novnc 远程访问

noVNC可以使用浏览器直接访问服务器&#xff0c;而不需要使用VNC客户端。 1.初始环境 关闭防火墙或允许IP访问本机 2.安装依赖 dnf install -y tigervnc-server git 3.git下载novnc git clone https://github.com/novnc/noVNC.git git clone https://gitee.com/yangyizhao…

吴恩达-从人类反馈中进行强化学习RLHF

吴恩达-从人类反馈中进行强化学习RLHF https://www.bilibili.com/video/BV1R94y1P7QX?p1&vd_sourcee7939b5cb7bc219a05ee9941cd297ade 1、公开的LLM&#xff0c;Llama2&#xff0c; 使用LLM对同一个提示产生多个不同输出&#xff0c;然后人类评估这些输出。评估方法是对比…

线程进阶(以解决线程安全问题为主)、volatile的底层实现

线程&#xff1a;以解决线程安全问题为主 进程&#xff1a;运行时程序&#xff0c;操作系统分配内存资源的最小单位。 线程 &#xff1a;进程内部最小执行单元。 多线程的优点&#xff1a;提高程序响应速度&#xff0c;可以多个线程各自完成自己的工作&#xff0c;提高设备利…

深入理解MyBatis缓存机制:一级缓存与二级缓存详解

深入理解MyBatis缓存机制&#xff1a;一级缓存与二级缓存详解 MyBatis作为一款优秀的持久层框架&#xff0c;其缓存机制是其核心功能之一。在MyBatis中&#xff0c;我们通常会遇到一级缓存和二级缓存&#xff0c;它们分别在不同的场景中发挥着重要作用。本文将深入探讨一级缓存…

鸿蒙不兼容安卓!正式迈入“完全自主研发”阶段,余承东最新发声!

2019年8月9日&#xff0c;华为鸿蒙“备胎”的一夜转正&#xff0c;四年多后的今天&#xff08;1月18日&#xff09;&#xff0c;华为鸿蒙再度令各界惊喜&#xff0c;因为在这一天&#xff0c;华为正式推出了完全自主研发的鸿蒙版本&#xff1a;HarmonyOS NEXT鸿蒙星河版&#x…

IMX6LL|时钟控制

一.时钟控制模块 4个层次配置芯片时钟 晶振时钟PLL与PFD时钟PLL选择时钟根时钟/外设时钟 1.1晶振时钟 系统时钟来源 RTC时钟源&#xff1a;32.768KHz&#xff0c;连接RTC模块&#xff0c;进行时间计算。系统时钟&#xff1a;24MHz&#xff0c;芯片主晶振 1.2PLL和PFD倍频时钟…

MySQL进阶45讲【2】日志系统:一条SQL更新语句是如何执行的?

1 前言 上篇文章我们系统了解了一个查询语句的执行流程&#xff0c;并介绍了执行过程中涉及的处理模块。相信大家还记得&#xff0c;一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块&#xff0c;最后到达存储引擎。 那么&#xff0c;一条更新语句…

【Nuxt3】目录中components文件夹的用法

简言 在Nuxt3中&#xff0c;components文件夹和vue文件夹用处一样&#xff0c;都是放置vue公共组件的地方。只不过由于Nuxt3中components文件内的组件自动导入机制&#xff0c;用法些许不同。 components components/ 目录是你放置所有 Vue 组件的地方。 Nuxt 会自动导入该目…

刷题 ------ 双指针

文章目录 1.验证回文串 ||2.计数二进制字串3. 字符的最短距离4.按奇偶排序数组5.仅仅反转字母6. 奇偶排序数组 ||7.长按键入8. 递减字符匹配9.有序数组的平方10.复写零11.删除回文子序列12.检查单词是否为剧中其他单词的前缀13.交替合并的字符串14.反转单词前缀15.找出数组中的…

阿赵UE学习笔记——11、地形系统

阿赵UE学习笔记目录 大家好&#xff0c;我是阿赵。   继续学习虚幻引擎的用法&#xff0c;这次来学习一下虚幻引擎的地形系统的用法。 一、创建地形 在选项模式里面&#xff0c;选择地形&#xff1a; 进入到地形界面之后&#xff0c;需要先创建一个地形&#xff1a; 留意看…

npm依赖库备份

常用命令 设置默认使用本地缓存安装Nodejs时会自动安装npm&#xff0c;但是局路径是C:\Users\Caffrey\AppData\Roaming\npm默认的缓存路径是C:\Users\Caffrey\AppData\Roaming\npm-cache&#xff1b;查看npm的prefix和cache路径配置信息设置路径 设置默认使用本地缓存 npm con…