先提供一种用O(M+N)空间的方法
class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
m = len(matrix)
n = len(matrix[0])
remhang = []
remlie = []
for i in range(m):
for j in range(n):
if matrix[i][j] == 0:
if i not in remhang:
remhang.append(i)
if j not in remlie:
remlie.append(j)
zerolist = []
print(remhang,remlie)
for i in range(n):
zerolist.append(0)
for hang in remhang:
matrix[hang] = zerolist
for lie in remlie:
for i in range(m):
matrix[i][lie] = 0
再提供一种用常数空间的
class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
m = len(matrix)
n = len(matrix[0])
#假设找到A[I][J]==0,我们将第i行前面的内容和第j列上面的所有元素换位'x'
for i in range(m):
for j in range(n):
if matrix[i][j] == 0:
for tempi in range(i):
matrix[tempi][j] = 0
for tempi in range(i+1,m):
if matrix[tempi][j] != 0:
matrix[tempi][j] = 'x'
for tempj in range(j):
matrix[i][tempj] = 0
for tempj in range(j+1,n):
if matrix[i][tempj] != 0:
matrix[i][tempj] = 'x'
elif matrix[i][j] == 'x':
matrix[i][j] = 0