Python程式:如何找到每個公寓樓高度增加到最大可能高度的矩陣?


假設我們有一個二維矩陣,其中 matrix[r, c] 表示城市中某棟公寓樓的高度。東西方向的天際線可以透過獲取矩陣中每一行的最大值來確定。南北方向的天際線可以透過獲取每一列的最大值來確定。我們需要找到一個新的矩陣,其中每棟公寓樓的高度都增加到最大可能高度,同時保持東西和南北方向的天際線不變。

例如,如果輸入如下:

234
567
8910


444
777
8910

因為東西方向的天際線是 [4, 7, 10],南北方向的天際線是 [8, 9, 10]。我們可以將第一行中的所有值都增加到 4,將第二行中的所有值都增加到 7,而不會改變天際線。

為了解決這個問題,我們將遵循以下步驟:

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

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

  • 對於範圍從 0 到矩陣行數的 i:

    • 對於範圍從 0 到矩陣列數的 j:

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

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

      • 否則,

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

  • 返回 matrix

讓我們看下面的實現來更好地理解。

示例

 線上演示

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]]

更新於: 2020年11月10日

209 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.