一、题设
给定一个 m x n
的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
二、基本思路
因为要原地修改也考虑到题目比较简单,所以尽量少用超两层的循环。
故先遍历一遍数组,将0元素的行列标分别记录下来,再去将行列标的元素全部赋值为0即可.
三、代码实现
class Solution(object):
def setZeroes(self, matrix):
m, n = len(matrix), len(matrix[0])
row = []
col = []
for i in range(m):
for j in range(n):
if matrix[i][j] == 0:
row.append(i)
col.append(j)
print(row,col)
# row 消0
for i in range(len(row)):
for j in range(n):
matrix[row[i]][j] = 0
# col 消0
for i in range(len(col)):
for j in range(m):
matrix[j][col[i]] = 0
return matrix