题目一:
链接:翻转题目
解题思路:
行翻转
值翻转
C++:
class Solution {
public:
vector<vector<int>> flipAndInvertImage(vector<vector<int>>& image) {
//行翻转
for(int i = 0;i<image.size();i++){
reverse(image[i].begin(),image[i].end());
}
//转换
for(int i = 0;i<image.size();i++){
for(int j = 0;j<image[0].size();++j){
image[i][j]=!image[i][j];
}
}
return image;
}
};
题目二:
链接:转置矩阵
解题思路:
定义需要初始化
C++:
class Solution {
public:
vector<vector<int>> transpose(vector<vector<int>>& matrix) {
//进行初始化
vector<vector<int>> l(matrix[0].size(),vector<int>(matrix.size(),0));
for(int i=0;i<matrix.size();i++){
for(int j=0;j<matrix[i].size();j++){
l[j][i]=matrix[i][j];
}
}
return l;
}
};
题目三:
链接:重塑矩阵
解题思路:
C++:
class Solution {
public:
vector<vector<int>> matrixReshape(vector<vector<int>>& mat, int r, int c) {
vector<vector<int>> l;
vector<int> flat;
if(mat.size()*mat[0].size()!=r*c) return mat;
for(int i=0;i<mat.size()*mat[0].size();i++){
int x=i/mat[0].size();
int y=i%mat[0].size();
flat.push_back(mat[x][y]);
if((i+1)%c==0){
l.push_back(flat);
flat.clear();
}
}
return l;
}
};
题目四:
链接:将一维数组转二维数组
解题思路:
C++:
class Solution {
public:
vector<vector<int>> construct2DArray(vector<int>& original, int m, int n) {
vector<vector<int>>l;
vector<int>flat;
if(original.size()!=m*n) return l;
for(int i=0;i<original.size();i++){
flat.push_back(original[i]);
if((i+1)%n==0){
l.push_back(flat);
flat.clear();
}
}
return l;
}
};