考虑我们有一个矩阵,在该矩阵中,如果一个元素为0,则使该矩阵的整个行和列均为0。转换将就位。所以如果矩阵是-1个01个
1个1个1个
1个1个1个
然后输出将是-000
1个01个
1个01个
让我们看看步骤-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]]