class Solution {
public:
vector<vector<int>> flipAndInvertImage(vector<vector<int>>& A) {
if (A.empty()) return A;
for (vector<int> &row : A)
{
reverse(row.begin(), row.end());
for_each(row.begin(), row.end(), [](int& x){x = 1^x; });
}
return A;
}
};
class Solution {
public:
vector<vector<int>> transpose(vector<vector<int>>& A) {
if(A.size()==0)
return {};
int col=A.size(),row=A[0].size();
vector<vector<int>> B;
int m=0,n=0;
for(int i=0;i<row;i++){
vector<int> C;
for(int j=0;j<col;j++){
C.push_back(A[m][n]);
if(m+1<col){
m++;
}else{
n++;
m=0;
}
}
B.push_back(C);
}
return B;
}
};
class Solution
{
public:
vector<vector<int>> matrixReshape(vector<vector<int>> &mat, int r, int c)
{
int m = mat.size();
int n = mat[0].size();
if (m * n != r * c)
return mat;
vector<vector<int>> ans(r, vector<int>(c)); // 初始化矩阵
for (int i = 0; i < m * n; ++i)
{
ans[i / c][i % c] = mat[i / n][i % n];
}
return ans;
}
};
class Solution {
public:
vector< vector< int > > construct2DArray( const vector< int > &original, int m, int n )
{
if( original.size() != m * n )
return {};
vector< vector< int > > ary2( m, vector< int >( n ) );
auto data = original.data();
for( int i{}, bytes = n * sizeof( int ); i < m; ++i, data += n )
memcpy( ary2[ i ].data(), data, bytes );
return ary2;
}
};