清除行列

来源:互联网 发布:手机怎样申请淘宝店铺 编辑:程序博客网 时间:2024/05/16 05:19

题目描述

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

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

测试样例:
[[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)    {        bool *row=new bool[n];        bool *col=new bool[n];        for(int i=0;i<n;i++)        {            row[i]=false;            col[i]=false;        }        for(int i=0;i<n;i++)            for(int j=0;j<n;j++)                if(mat[i][j]==0)                {                    row[i]=true;                    col[j]=true;                }        for(int i=0; i<n; i++)            for(int j=0; j<n; j++)            {                if(row[i]||col[j])                {                    mat[i][j]=0;                }            }        return mat;    }};


0 0