Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
click to show follow up.
Follow up:
Did you use extra space?
A straight forward solution using O(mn) space is probably a bad idea.
A simple improvement uses O(m + n) space, but still not the best solution.
Could you devise a constant space solution?
题意:
给一个 m x n 矩阵,如果一个元素是0,就将它所在的整个行列都变成0,原地执行此操作
进一步:
你用了额外的空间了么?
一个直接的方法会用到 O(mn) 空间,但这是一个bad idea
有个简单的改进是用 O(m + n) 空间,但仍然不是最好的办法
你能设计一个常数空间的方法么?
思路:
先遍历一次矩阵,记录下元素是 0 的行列,i,j
第二次遍历,如果该位置的行列存在于上述纪录中,则此位置元素变为 0
Python:
class Solution(object): def setZeroes(self, matrix): """ :type matrix: List[List[int]] :rtype: void Do not return anything, modify matrix in-place instead. """ m=len(matrix) n=len(matrix[0]) row=[False for i in range(m)] colum=[False for j in range(n)] for i in range(m): for j in range(n): if matrix[i][j]==0: row[i]=True colum[j]=True for i in range(m): for j in range(n): if row[i] or colum[j]: matrix[i][j]=0