如果矩阵的某一元素为0,则该行、该列都设为0,第一遍遍历设定需要设0的行列,需要特殊处理的是第0行和第0列,比如m[5][0]是0,则设定m[5][0]和m[0][0]为0,如果不加特殊出列,则m[0][0]会导致0行0列都为0,而实际上只需要第0列为0.
class Solution(object):
def setZeroes(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: void Do not return anything, modify matrix in-place instead.
"""
m = len(matrix)
if not m:
return
n = len(matrix[0])
if not n:
return
flag_r = 0
flag_c = 0
for i in range(m):
for j in range(n):
if matrix[i][j] == 0:
matrix[i][0] = 0
matrix[0][j] = 0
if i == 0:
flag_r = 1
if j == 0:
flag_c = 1
for i in range(1, m):
for j in range(1, n):
if matrix[i][0] == 0 or matrix[0][j] == 0:
matrix[i][j] = 0
if flag_r :
for i in range(1, n):
matrix[0][i] = 0
if flag_c :
for i in range(1, m):
matrix[i][0] = 0
return