用时间换取空间,两次AC通过,第一次出错在于不能只找到每一行的第一个0元素,而要寻找每一行所有的非零元素。
class Solution { public: void setZeroes(vector<vector<int>>& matrix) { if(matrix.size()==0||matrix[0].size()==0) return; int m=matrix.size(); int n=matrix[0].size(); set<int> col; for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { if(matrix[i][j]==0) col.insert(j); } for(int j=0;j<n;j++) { if(matrix[i][j]==0) { for(int j=0;j<n;j++) matrix[i][j]=0; break; } } } for(set<int>::iterator it=col.begin();it!=col.end();it++) { int col=*it; for(int i=0;i<m;i++) matrix[i][col]=0; } return; } };