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 = 4Output:[[1,2,3,4]]Explanation:Therow-traversingof 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.

把一个n*m的矩阵按行重新组织为r*c的矩阵，相当于MATLAB的reshape函数。

简单题，新矩阵中第cnt个数，在原矩阵中的位置是(cnt/m,cnt%m)。

代码如下：

class Solution { public: vector<vector<int>> matrixReshape(vector<vector<int>>& nums, int r, int c) { int n = nums.size(), m = nums[0].size(); if (n*m != r*c)return nums; vector<vector<int>> ans(r, vector<int>(c, 0)); for (int i = 0; i < r; ++i) { for (int j = 0; j < c; ++j) { int cnt = i*c + j; ans[i][j] = nums[cnt / m][cnt % m]; } } return ans; } };

本代码提交AC，用时62MS。