Reshape the Matrix
来源:互联网 发布:淘宝怎么才能投诉快递 编辑:程序博客网 时间:2024/06/02 16:00
In 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 = 4
Output:
[[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 = 4
Output:
[[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.
方法1:利用商与余数
class Solution {public: vector<vector<int>> matrixReshape(vector<vector<int>>& nums, int r, int c){ if(r*c!=nums.size()*nums[0].size()) return nums; vector<vector<int>> res; vector<int> row(c); int count = 0 ; for(int i = 0 ; i < nums.size(); ++i){ for(int j = 0; j < nums[0].size(); ++j){ row[count%c] = nums[i][j]; ++count; if(count%c == 0) res.push_back(row); } } return res; }};
方法2:
class Solution {public: vector<vector<int>> matrixReshape(vector<vector<int>>& nums, int r, int c) { if(nums.size() * nums[0].size()!= r*c) return nums; vector<vector<int>> res; vector<int> buffer; for(int i = 0 ; i < nums.size(); ++i){ for(int j = 0 ; j < nums[i].size(); ++j){ buffer.push_back(nums[i][j]); } } vector<int> row; for(int i = 0 ; i < buffer.size(); ++i){ row.push_back(buffer[i]); if((i+1)%c==0){ res.push_back(row); row.clear(); } } return res; }};
- Reshape the Matrix
- 566. Reshape the Matrix
- 566.Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- LeetCode566. Reshape the Matrix
- 566. Reshape the Matrix
- LeetCode566. Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- 566. Reshape the Matrix
- Reshape the Matrix
- 566. Reshape the Matrix
- Android关于低功耗的蓝牙开发工具类
- Hudson中新建任务
- 深入理解volatile
- JQuery中ajax的简单使用教程(附带实例代码)
- 使用AVPro Video插件完成切换多个视频播放功能
- Reshape the Matrix
- 编译报错:实际参数列表和形式参数列表长度不同 解决方法
- 收集了一些常用的Android代码
- UVALive
- Linux的网卡由eth0变成了eth1,如何修复
- angularjs常用实例
- Alertdialog对话框,设置点击其他位置不消失
- java总的重载(overload)、重写或覆盖(override)和隐藏分析;
- 关于java的字符串