-
Notifications
You must be signed in to change notification settings - Fork 0
/
ReshapeTheMatrix.cpp
41 lines (34 loc) · 1.32 KB
/
ReshapeTheMatrix.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// Reshape the Matrix
// In MATLAB, there is a handy function called reshape which can reshape an m x n matrix into a new one with a different size r x c
// keeping its original data.
// You are given an m x n matrix mat and two integers r and c representing the row number and column number of the wanted
// reshaped matrix.
// The reshaped matrix should 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.
class Solution {
public:
vector<vector<int>> matrixReshape(vector<vector<int>>& mat, int r, int c) {
if((r * c) != (mat.size() * mat[0].size()))
return mat;
vector<vector<int>> fans;
int col = 0;
vector<int> ans;
for(int i = 0; i < mat.size(); i++)
{
for(int j = 0; j < mat[i].size(); j++)
{
if(c == col)
{
col = 0;
fans.push_back(ans);
ans.clear();
}
ans.push_back(mat[i][j]);
col++;
}
}
fans.push_back(ans);
return fans;
}
};