思路: 一维展开:理解题意即将原数组一维展开后依次填充进r*c的数组,时间复杂度O(m*n)。
class Solution {
public:
vector<vector<int>> matrixReshape(vector<vector<int>>& mat, int r, int c) {
vector<vector<int>> ans(r, vector<int>(c));
int m = mat.size();
int n = mat[0].size();
int tot = m*n;
if(tot != r*c) return mat; // 元素数量不相同不可转换
for(int i = 0; i < tot; i ++){
ans[i/c][i%c] = mat[i/n][i%n]; // 直接一维展开按顺序填充
}
return ans;
}
};