简单的思路拿两个数组记录哪些行和列需要变成0空间复杂度Omnclass Solution(object): def setZeroes(self, matrix): :type matrix: List[List[int]] :rtype: None Do not return anything, modify matrix in-place instead. hset() lset() mlen(matrix) nlen(matrix[0]) for i in range(m): for j in range(n): if matrix[i][j]0: h.add(i) l.add(j) for i in h: matrix[i][0]*n for j in l: for i in range(m): matrix[i][j]0 return matrix继续优化要使用O1的空间复杂度不能多余开数组那么矩阵本身就要充当这个草稿纸的身份记录哪些行和列需要被置零。class Solution(object): def setZeroes(self, matrix): :type matrix: List[List[int]] :rtype: None Do not return anything, modify matrix in-place instead. mlen(matrix) nlen(matrix[0]) row_0any(matrix[0][i]0 for i in range(n)) col_0any(matrix[j][0]0 for j in range(m)) for i in range(m): for j in range(n): if matrix[i][j]0: matrix[i][0]0 matrix[0][j]0 for i in range(1,m): if matrix[i][0]0: matrix[i][0]*n for j in range(1,n): if matrix[0][j]0: for i in range(m): matrix[i][j]0 if row_0: matrix[0][0]*n if col_0: for i in range(m): matrix[i][0]0可以使用两个变量记录第一行和第一列到底是不是需要变成0因为matrix[0][0]无法判定到底是行为0还是列为0
矩阵置零(力扣100)
发布时间:2026/5/19 23:11:01
简单的思路拿两个数组记录哪些行和列需要变成0空间复杂度Omnclass Solution(object): def setZeroes(self, matrix): :type matrix: List[List[int]] :rtype: None Do not return anything, modify matrix in-place instead. hset() lset() mlen(matrix) nlen(matrix[0]) for i in range(m): for j in range(n): if matrix[i][j]0: h.add(i) l.add(j) for i in h: matrix[i][0]*n for j in l: for i in range(m): matrix[i][j]0 return matrix继续优化要使用O1的空间复杂度不能多余开数组那么矩阵本身就要充当这个草稿纸的身份记录哪些行和列需要被置零。class Solution(object): def setZeroes(self, matrix): :type matrix: List[List[int]] :rtype: None Do not return anything, modify matrix in-place instead. mlen(matrix) nlen(matrix[0]) row_0any(matrix[0][i]0 for i in range(n)) col_0any(matrix[j][0]0 for j in range(m)) for i in range(m): for j in range(n): if matrix[i][j]0: matrix[i][0]0 matrix[0][j]0 for i in range(1,m): if matrix[i][0]0: matrix[i][0]*n for j in range(1,n): if matrix[0][j]0: for i in range(m): matrix[i][j]0 if row_0: matrix[0][0]*n if col_0: for i in range(m): matrix[i][0]0可以使用两个变量记录第一行和第一列到底是不是需要变成0因为matrix[0][0]无法判定到底是行为0还是列为0