编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。
示例 1:
输入:
[
[1,1,1],
[1,0,1],
[1,1,1]
]
输出:
[
[1,0,1],
[0,0,0],
[1,0,1]
]
示例 2:
输入:
[
[0,1,2,0],
[3,4,5,2],
[1,3,1,5]
]
输出:
[
[0,0,0,0],
[0,4,5,0],
[0,3,1,0]
]
来源:力扣(LeetCode)
题目难度不大,但是需要注意对于矩阵的处理。对于python而言,操作一行是非常容易的,但是对一列进行操作时不方便的,在计算机组成原理也印证了这一点,一般来说如果矩阵在寄存器或者内存中是按行进行存储的,则根据局部性原理先进行行修改是正确的,因为这样能够有效的减少缺页的风险。
class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
row,col=set(),set()
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if not matrix[i][j]:
row.add(i)
col.add(j)
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if i in row:
matrix[i]=[0]*len(matrix[0])
break
if j in col:
matrix[i][j]=0
return matrix
