73. Set Matrix Zeroes 儘可能小的空間複雜度問題
阿新 • • 發佈:2019-02-20
題意:如果二維陣列中有1個0, 則把那一行和那一列都變為0
要求空間複雜度小於O(m + n)
於是我的方法是O(m)空間複雜度
每次遍歷1行,如果發現是0,就把 列清零flag[列號] 置1
如果那一行發現過0,則整行清0
全部行都這樣處理後,再對列進行處理,如果flag為1,就清零
class Solution { public: void setZeroes(vector<vector<int>>& matrix) { int n = matrix.size(); //行 int m = matrix[0].size(); //列 int i,j; vector<int> flag(m,0); int cowf; for(i = 0;i < n;i++){ cowf = 0; for(j = 0; j < m;j++){ if(matrix[i][j] == 0){ flag[j] = 1; cowf = 1; } } if(cowf) for(j = 0;j < m;j++) matrix[i][j] = 0; } for(j = 0;j < m;j++) if(flag[j]) for(i = 0;i < n;i++) matrix[i][j] = 0; } };