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