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