【LEETCODE】73-Set Matrix Zeroes [Python]

来源:互联网 发布:java三大框架书籍推荐 编辑:程序博客网 时间:2024/06/01 14:20

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


0 0
原创粉丝点击