566. Reshape the Matrix

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.
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:

  1. The height and width of the given matrix is in range [1, 100].
  2. The given r and c are all positive.

我的照葫芦画瓢代码:
精巧想法是: res[i / c][i % c] = A[i / cc][i % cc]; 老服气了!
副产品: vector<vector<int>>vec(m,vector<int>(n,0));
m*n的二维vector,所有元素为0

vector<vector<int>> matrixReshape(vector<vector<int>>& A, int r, int c) {
    int rr = A.size(), cc = A[0].size();
    if (rr * cc != r * c) return A;

    vector<vector<int>> res(r, vector<int>(c, 0));
    for (int i = 0; i < r * c; i++)
        res[i / c][i % c] = A[i / cc][i % cc];
    return res;
}
原文地址:https://www.cnblogs.com/ZhongliangXiang/p/7361823.html