Python程式:如何找到每個公寓樓高度增加到最大可能高度的矩陣?
假設我們有一個二維矩陣,其中 matrix[r, c] 表示城市中某棟公寓樓的高度。東西方向的天際線可以透過獲取矩陣中每一行的最大值來確定。南北方向的天際線可以透過獲取每一列的最大值來確定。我們需要找到一個新的矩陣,其中每棟公寓樓的高度都增加到最大可能高度,同時保持東西和南北方向的天際線不變。
例如,如果輸入如下:
| 2 | 3 | 4 |
| 5 | 6 | 7 |
| 8 | 9 | 10 |
| 4 | 4 | 4 |
| 7 | 7 | 7 |
| 8 | 9 | 10 |
因為東西方向的天際線是 [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]]
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP