Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in-place.
Input:
[
[1,1,1],
[1,0,1],
[1,1,1]
]
Output:
[
[1,0,1],
[0,0,0],
[1,0,1]
]
Input:
[
[0,1,2,0],
[3,4,5,2],
[1,3,1,5]
]
Output:
[
[0,0,0,0],
[0,4,5,0],
[0,3,1,0]
]
Follow up:
将二维数组中某位置值为0的整行整列都置为0.
不建议使用复制数组的方式。
其实看这题时我们人脑能快速地反应出结果,但其实也跳跃了一些步骤。比如在判断前面的数置0后会影响后面的判断,所以我们得想办法记住哪些位值为0。一个是使用python的set()工具,一个是使用flag标签。
class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
get_i_j = set()
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if matrix[i][j] == 0:
get_i_j.add((i,j))
for index in get_i_j:
r = index[0]
c = index[1]
matrix[r] = [0] * len(matrix[0])
for i in range(len(matrix)):
matrix[i][c] = 0
class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
row = [False for i in range(len(matrix))]
col = [False for j in range(len(matrix[0]))]
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if matrix[i][j] == 0:
row[i] = True
col[j] = True
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if row[i] or col[j]:
matrix[i][j] = 0
周末了,一个星期又过去了。