566.重塑矩阵
题目:[https://leetcode-cn.com/problems/reshape-the-matrix/description/]
思路:给定一个矩阵,判定能否转换成指定row行col列的矩阵。首先判定是否能转换成新的矩阵,即:原矩阵的元素总数(row*col)是否等于新的矩阵。如果能,就逐排填充,组成新的矩阵。
代码:
class Solution {
public:
vector<vector<int>> matrixReshape(vector<vector<int>>& nums, int r, int c) {
if (r*c!=nums[0].size()*nums.size()) {//判断是否能够重塑矩阵
return nums;
}
vector<int> row;//初始化重塑矩阵的行
vector<vector<int>> ans;
int r_S=0;//新矩阵的行r_S的计数器,最大值为c-1,用以逐排构成元素
for (auto &i:nums) {//遍历原容器
for (int &j:i) {
row.push_back(j);//逐排构成新的矩阵
++r_S;
if (r_S==c) {//新矩阵是否填满,
r_S=0;//填满计数器置零
ans.push_back(row);
row.clear();//清空当前行
}
}
}
return ans;
}
};
讨论区[https://leetcode.com/problems/reshape-the-matrix/solution/]
反思:1、对于一个R行C列矩阵,每行(r)最大有C个元素,每列(c)最大有R个元素

浙公网安备 33010602011771号