此题水题,
我的解法:
class Solution {
public:
vector<vector<int>> matrixReshape(vector<vector<int>>& nums, int r, int c) {
int m=nums.size();
int n=nums[0].size();
if(r*c!=m*n)
return nums;
vector<vector<int>> matrix;
for(int i=0;i<r;i++)
{
vector<int> temp;
for(int j=0;j<c;j++)
{
int x = (i*c+j)/n;
int y = (i*c+j)%n;
temp.push_back(nums[x][y]);
}
matrix.push_back(temp);
}
return matrix;
}
};
思想也就是把矩阵想成一个长向量,然后依次往里面填。O(rc)
其他人的解法有使用一个循环,就是初始化好一个rc矩阵,然后从1到rc,然后往里填
matrix[i/c][i%c]=nums[i/n][i%n];
就算法复杂度而言相同,循环少一层。