566. Reshape the Matrix
来源:互联网 发布:数据平台开发工程师 编辑:程序博客网 时间:2024/06/07 19:39
一、题目:
n MATLAB, there is a very useful function called 'reshape', which can reshape a matrix into a new one with different size but keep its original data.You're given a matrix represented by a two-dimensional array, and two positive integers r and c representing the row number and column number of the wanted reshaped matrix, respectively.The reshaped matrix need to be filled with all the elements of the original matrix in the same row-traversing order as they were.If the 'reshape' operation with given parameters is possible and legal, output the new reshaped matrix; Otherwise, output the original matrix.Example 1:Input: nums = [[1,2], [3,4]]r = 1, c = 4Output: [[1,2,3,4]]Explanation:The row-traversing of nums is [1,2,3,4]. The new reshaped matrix is a 1 * 4 matrix, fill it row by row by using the previous list.Example 2:Input: nums = [[1,2], [3,4]]r = 2, c = 4Output: [[1,2], [3,4]]Explanation:There is no way to reshape a 2 * 2 matrix to a 2 * 4 matrix. So output the original matrix.Note: The height and width of the given matrix is in range [1, 100]. The given r and c are all positive.
二、解法:
class Solution { /* 首先观察一下这个矩阵: vector<vector<int>> nums = { {1,2},{3,4},{5,6},{7,8} }; 它的行数 r=4;它的列数 c=2; 假如使得 r=2,c=4 则 nums变换为 nums = { {1,2,3,4},{5,6,7,8} }; 找规律发现 r控制数组个数,c控制每个数组元素个数 现在根据i 找出它所在的行数 ,列数 分别是 :i/c,i%c。 */ public: vector<vector<int>> matrixReshape(vector<vector<int>>& nums, int r, int c) { int m = nums.size(), n = nums[0].size(), o = m * n; if (r * c != o) return nums; vector<vector<int>> res(r, vector<int>(c, 0)); for (int i = 0; i < o; i++) res[i / c][i % c] = nums[i / n][i % n]; return res; }};
阅读全文
0 0
- 566. Reshape the Matrix
- 566.Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- maven 安装 记录一下
- LeetCode 53 Maximum Subarray
- ZCMU新人训练赛B
- Sublime Text 连接 FTP/SFTP
- 排序算法之快速排序
- 566. Reshape the Matrix
- Hadoop2.6.0运行mapreduce之Uber模式验证 标签: hadoopmapreduce源码uberjava 2016-05-05 14:55 19815人阅读 评论(2) 收藏 举报
- Hadoop 新 MapReduce 框架 Yarn 详解
- 3.Android硬件访问服务编写APP代码
- Linux下安装及使用sqlite3数据库
- SpringMVC学习系列(2) 之 经典的HelloWorld实现
- Zabbix 基础与进阶(2) —— zabbix工作模式的部署
- 第六弹——好用且开源的mysql
- webservice-自定义注解处理参数加解密问题