Python 程序,将行和列中为 0 的每个元素转换为 0


假设我们有一个数字的二维矩阵,现在对于给定矩阵中的每个 0,将用 0 替换其所在行和列中的所有值,并返回最终矩阵。

因此,如果输入类似于矩阵,则输出将是矩阵,因为第 0、2 和 3 行包含 0,最终矩阵的这些行包含 0。类似地,第 0、1 和 2 列包含 0,最终矩阵的这些列包含 0。

为解决此问题,我们将按照以下步骤进行操作

n := row count, m := column count
res := make a matrix of size n x m and fill with 0
transpose := transpose given matrix
for each row i, do
   if 0 not in matrix[i], then
      for each column j in matrix, do
         if 0 not in transpose[j], then
            res[i, j] := matrix[i, j]
return res

让我们看看以下实现以更好地理解 −

示例

 实时演示

class Solution:
   def solve(self, matrix):
      n, m = len(matrix), len(matrix[0])
      res = [[0 for __ in range(m)] for _ in range(n)]
      transpose = [list(row) for row in zip(*matrix)]

      for i in range(n):
         if 0 not in matrix[i]:
            for j in range(m):
               if 0 not in transpose[j]:
                  res[i][j] = matrix[i][j]

      return res

ob = Solution()
matrix = [
      [6, 0, 0, 6, 9],
      [4, 9, 9, 4, 8],
      [0, 8, 3, 4, 2],
      [9, 0, 7, 8, 3],
      [5, 2, 9, 6, 8]
]
print(ob.solve(matrix))

输入

matrix = [ [6, 0, 0, 6, 9], [4, 9, 9, 4, 8], [0, 8, 3, 4, 2], [9, 0, 7, 8, 3], [5, 2, 9, 6, 8] ]

输出

[[0, 0, 0, 0, 0], [0, 0, 0, 4, 8], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 6, 8]]

更新时间: 09-11-2020

425 人次浏览

开启你的 职业生涯

完成课程即可获得认证

开始
广告