如果矩阵的某一元素为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
本文介绍了一种高效的矩阵置零算法,当矩阵中的某个元素为0时,将该元素所在的行和列全部置零。通过一次遍历确定需要置零的位置,并使用标志位处理特殊情况,避免了多次遍历和额外的空间开销。
--Set Matrix Zeros&spm=1001.2101.3001.5002&articleId=78566890&d=1&t=3&u=0ae4c26f69774171a8f46a6f08fa9629)

被折叠的 条评论
为什么被折叠?



