LeetCode[python]マトリクスゼロ
1394 ワード
m x nのマトリクスが与えられ、要素が0の場合、行と列のすべての要素が0に設定されます.その場アルゴリズムを使用してください.
例1:
例2:
ステップ:の直接的な解はO(mn)を用いた余分な空間であるが,これは良い解ではない. 簡単な改良はO(m+n)の余分な空間を使用することであるが,これは依然として最良の解ではない. 定数空間の解決策を考え出せますか?
考え方:
ここではO(m+n)の余分な空間法を与えて解決した.すなわち,ゼロが現れる位置を格納するためにzeroLineとzeroRowの2つのlistをそれぞれ定義する.
コード:
例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]
]
ステップ:
考え方:
ここではO(m+n)の余分な空間法を与えて解決した.すなわち,ゼロが現れる位置を格納するためにzeroLineとzeroRowの2つのlistをそれぞれ定義する.
コード:
class Solution:
def setZeroes(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: void Do not return anything, modify matrix in-place instead.
"""
lenRow = len(matrix[0])
lenLine = len(matrix)
zeroRow = [False] * lenRow
zeroLine = [False] * lenLine
for l in range(lenLine):
for r in range(lenRow):
if matrix[l][r] == 0:
zeroRow[r] = True
zeroLine[l] = True
for l in range(lenLine):
if zeroLine[l] is True:
matrix[l] = [0] * lenRow
else:
for r in range(lenRow):
if zeroRow[r] is True:
matrix[l][r] = 0
return matrix