【LEETCODE】73-Set Matrix Zeroes [Python]

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


你可能感兴趣的:(LeetCode,python)