
编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。

思路:找到所有0的位置,然后将位置上行列所有元素变成0。
python3实现:
class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
# 找到0所在的行和列,然后将对应行和列所有元素置为0
zero_pos = []
for row_idx in range(len(matrix)):
each_line = matrix[row_idx]
# print("each_line:", each_line)
for every_elem_idx in range(len(each_line)):
if each_line[every_elem_idx] == 0:
# 形式:(行,列)
col_idx = every_elem_idx
zero_pos.append((row_idx, col_idx))
# print("所有零的位置:", zero_pos)
# 将所有零所在位置行和列元素变成0
for pos in zero_pos:
# 所有行变0
for all_elem_idx_rol in range(len(matrix[pos[0]])):
matrix[pos[0]][all_elem_idx_rol] = 0
# 所有列变0
for all_elem_idx_col in range(len(matrix)):
matrix[all_elem_idx_col][pos[1]] = 0
# print("matrix:")
# print(matrix)
