题目描述:
首刷自解:
vector<vector<int>> matrixReshape(vector<vector<int>>& mat, int r, int c) {
int m = mat.size();
int n = mat[0].size();
int row1 = 0, row2 = 0, column;
if (m * n != r * c)
return mat;
vector<vector<int>> reshape;
reshape.resize(r);
while (row1 < m)
{
for (column = 0; column< n ; ++column)
{
reshape[row2].push_back(mat[row1][column]);
if (reshape[row2].size() == c)
++row2;
}
++row1;
}
return reshape;
}
进阶看解:
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>> reshape(r,vector<int>(c));
for (int x = 0; x < m * n; ++x)
{
reshape[x / c][x % c] = mat[x / n][x % n];
}
return reshape;
}
};