Leetcode73 矩陣置零
阿新 • • 發佈:2018-12-18
已AC, 中等題
思路:
- 設定兩個集合,line_set,row_set分別存放矩陣中0所在的行和列,使用集合是避免重複遍歷
- 第一次遍歷二維陣列,將相應數字裝入集合
- 第二次遍歷將兩個集合裡的行列全部置零
我的這種方法雖然通過,但是可能與題意不是很符合,題目要求原地演算法,我額外佔用了集合的空間應該是屬於違規的,不借助額外空間也是可以的:
- 每次遍歷遇到0就把他所在的行列置位其他數字或字元比如 ‘ t ’,因為置為零會影響下面的判斷,最後再遍歷一次把 ‘ t ’字元的都置為零即可
class Solution(object): def setZeroes(self, matrix): """ :type matrix: List[List[int]] :rtype: void Do not return anything, modify matrix in-place instead. """ i_set = set() j_set = set() for i in xrange(len(matrix)): for j in xrange(len(matrix[i])): if matrix[i][j] == 0: i_set.add(i) j_set.add(j) for i in i_set: matrix[i]=[0]*len(matrix[i]) for j in j_set: for i in xrange(len(matrix)): matrix[i][j]=0 #return matrix