用 Python 编写一个程序,找出一个矩阵,将每栋公寓的高度增加到最大可能高度?
pythonserver side programmingprogramming更新于 2026/2/16 10:52:17
假设我们有一个 2D 矩阵,其中矩阵 [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]]
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

