您的位置:首页 > 编程语言 > Python开发

【LEETCODE】73-Set Matrix Zeroes [Python]

2016-01-20 09:50 459 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: