LeetCode——行列のゼロを設定します
Leetcode Set Matrix Zeroes
m x n行列が与えられ、要素が0の場合、その行と列全体を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]
] - ファローアップ:
O(mn)スペースを使用した簡単な解決策はおそらく悪い考えです。
単純な改善ではO(m + n)スペースを使用しますが、それでも最善の解決策ではありません。
一定の空間ソリューションを考案できますか?
class Solution: def setZeroes(self, matrix: List[List[int]]) -> None: ''' Do not return anything, modify matrix in-place instead. ''' if not matrix: return n,m,k=len(matrix),len(matrix[0]),0 while k<m and matrix[0][k]: k=k+1 for i in range(1,n): for j in range(m): if not matrix[i][j]: matrix[i][0]=matrix[0][j]=0 for i in range(1,n): for j in range(m-1,-1,-1): if not matrix[i][0] or not matrix[0][j]: matrix[i][j]=0 if k<m: matrix[0]=[0]*m