Set Matrix Zeroes

来源:互联网 发布:mac必装软件 知乎 编辑:程序博客网 时间:2024/06/03 10:17
class Solution {public:    void setZeroes(vector<vector<int> > &matrix) {        int m=matrix.size();        int n=matrix[0].size();        vector<int>row;        vector<int>col;        row.assign(m,0);        col.assign(n,0);        for(int i=0;i<m;i++)        {            for(int j=0;j<n;j++)            {                if(matrix[i][j]==0)                {                    row[i]=1;                    col[j]=1;                }            }        }        for(int i=0;i<m;i++)        {            if(row[i]==1)               matrix[i].assign(n,0);        }            for(int j=0;j<n;j++)            {                if(col[j]==1)                   for(int k=0;k<m;k++)                       matrix[k][j]=0;            }            }};
感觉写得还是有点乱,主要是下面赋值部分,这里的空间复杂度是o(n+m),题目中有问到是否能用常数的空间复杂度,可以考虑将用matrix的第一行,第一列作为上面row、col的替代,就是说:找到一个matrix[i][j]=0就可以将对应在第一行第一列的值赋值为0,最后再扫描一遍即可
0 0