为每个公寓的高度查找矩阵的程序是否增加到Python中的最大可能高度?

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

所以,如果输入像

234
567
8910


444
777
8910

因为东西方的天际线是[4,7,10],而南北的天际线是[8,9,10]。我们可以在不更改天际线的情况下将第一行中的所有内容增加到值4,将第二行中的所有内容增加到值7。

为了解决这个问题,我们将按照以下步骤操作:

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

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

  • 对于范围在0到矩阵行数的i,执行

    • 如果r [i] <c [j],则

    • 除此以外,

    • 矩阵[i,j]:= r [i]

    • 矩阵[i,j]:= c [j]

    • 对于范围从0到矩阵的列数的j,执行

    • 返回矩阵

    让我们看下面的实现以更好地理解:

    示例

    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]]
    猜你喜欢