在Python中设置矩阵零
考虑我们有一个矩阵,在该矩阵中,如果一个元素为0,则使该矩阵的整个行和列均为0。转换将就位。所以如果矩阵是-
然后输出将是-
让我们看看步骤-
n:=行数,m:=列数,设置标志:=false
如果mat[0,0]=0,则设置标志:=true
设置row:=false和col:=false
对于我在1到n范围内
如果mat[i,0]=0,则设置col:=True并中断循环
当我在1到m的范围内
如果mat[0,i]=0,则设置row:=True并中断循环
对于我在1到n范围内
如果mat[i,j]=0,则设置mat[i,0]=0和mat[0,j]:=0
对于1到m范围内的j
对于我在1到n范围内
如果mat[i,0]=0且mat[0,j]=0,则设置mat[i,j]=0
对于1到m范围内的j
如果设置了标志
对于范围从0到n的i,垫子[i,0]:=0
对于范围从0到m的i,mat[0,i]:=0
除此以外
如果设置了col,则对于介于0到n范围内的i,使用mat[i,0]:=0
如果设置了行,则对于i在0到m范围内,垫[0,i]:=0
让我们看下面的实现以更好地理解-
示例
class Solution(object): def setZeroes(self, matrix): n = len(matrix) m = len(matrix[0]) flag = False if matrix[0][0] == 0: flag = True row = False column = False for i in range(1,n): if matrix[i][0] == 0: column = True break for i in range(1,m): if matrix[0][i] == 0: row = True break for i in range(1,n): for j in range(1,m): if matrix[i][j] == 0: matrix[0][j] = 0 matrix[i][0]=0 for i in range(1,n): for j in range(1,m): if not matrix[i][0] or not matrix[0][j]: matrix[i][j] = 0 if flag: for i in range(n): matrix[i][0] = 0 for i in range(m): matrix[0][i]=0 else: if column: for i in range(n): matrix[i][0]=0 if row: for i in range(m): matrix[0][i]=0 return matrix ob1 = Solution() print(ob1.setZeroes([[1,0,1],[1,1,1],[1,1,1]]))
输入值
[[1,0,1],[1,1,1],[1,1,1]]
输出结果
[[0, 0, 0], [1, 0, 1], [1, 0, 1]]