Python程序:如何找到将每个公寓大楼的高度增加到最大可能高度的矩阵?

Python程序:如何找到将每个公寓大楼的高度增加到最大可能高度的矩阵?

假设我们有一个二维矩阵,其中矩阵[r, c]表示城市中一个公寓的高度。通过取矩阵中每一行的最大值,可以看到东西方向的天际线。通过取矩阵中每一列的最大值,可以看到南北方向的天际线。我们需要找到一个新矩阵,其中每个公寓的高度都增加到最大可能高度,同时保持相同的东西和南北天际线。

因此,如果输入为:

2 3 4
5 6 7
8 9 10

则东西方向的天际线为[4, 7, 10],南北方向的天际线为[8, 9, 10]。我们可以将第一行的所有元素增加到值4,将第二行的所有元素增加到值7,而不改变天际线。

为了解决这个问题,我们将遵循以下步骤:

  • r :=矩阵中每一行的最大值的列表

  • c :=矩阵中每一列的最大值的列表

  • 对于i从0到矩阵的行数,做以下操作:

    • 对于j从0到矩阵的列数,做以下操作:
      • 如果r[i] < c[j],那么

      • matrix[i, j] := r[i]

      • 否则,

      • matrix[i, j] := c[j]

  • 返回矩阵

让我们看下面的实现,以获得更好的理解:

更多Python相关文章,请阅读:Python 教程

示例

class Solution:
   def solve(self, matrix):
      r = [max(i) for i in matrix]
      c = [max(i) for i in zip(*matrix)]
      for i in range(len(matrix)):
         for j in range(len(matrix[i])):
            if r[i] < c[j]:
               matrix[i][j] = r[i]
            else:
               matrix[i][j] = c[j]
      return matrix

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

输入

[[2, 3, 4],
[5, 6, 7],
[8, 9, 10]]

输出

[[4, 4, 4], [7, 7, 7], [8, 9, 10]]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程