清除行列

请编写一个算法,若N阶方阵中某个元素为0,则将其所在的行与列清零。

给定一个N阶方阵int[][](C++中为vector<vector><int>>)mat和矩阵的阶数n,请返回完成操作后的int[][]方阵(C++中为vector<vector><int>>),保证n小于等于300,矩阵中的元素为int范围内。</int></vector></int></vector>

测试样例:   [[1,2,3],[0,1,2],[0,0,1]] 返回:[[0,0,3],[0,0,0],[0,0,0]]

class Clearer {
public :
     vector<vector< int > > clearZero(vector<vector< int > > mat,  int n) {
         // write code here
         vector< int > X(n,0);
         vector< int > Y(n,0);
         for ( int i=0;i<n;i++)
             for ( int j=0;j<n;j++)
             {
                 if (mat[i][j] == 0)
                 {
                     X[i]=1;
                     Y[j]=1;
                 }
             }
         for ( int i=0;i<n;i++)
             for ( int j=0;j<n;j++)
             {
                 if (X[i]==1 || Y[j] == 1)
                     mat[i][j]=0;
             }
         return mat;
     }

};




补充:

C++ Vectors可以使用以下任意一种参数方式构造:

  • 无参数 - 构造一个空的vector,
  • 数量(num)和值(val) - 构造一个初始放入num个值为val的元素的Vector
  • vector(from) - 构造一个与vector from 相同的vector
  • 迭代器(start)和迭代器(end) - 构造一个初始值为[start,end)区间元素的Vector(注:半开区间).

举例,下面这个实例构造了一个包含5个值为42的元素的Vector

vector<int> v1( 5, 42 );

猜你喜欢

转载自blog.csdn.net/qq_42633819/article/details/80971855