宝马手游网-最好玩的手机游戏门户网站!
当前位置: 首页 > 游戏动态

城市天际线测回, 题目描述

来源:小编 更新:2024-09-14 09:47:22

用手机看

扫描二维码随时看1.在手机上浏览
2.分享给你的微信好友或朋友圈

题目描述

给定一个 x 的矩阵 grid,矩阵中的元素表示建筑物的高度。城市的天际线是指从远处观察城市时,所有建筑物形成的外部轮廓。从东、南、西、北四个主要方向观测到的天际线可能不同。

我们被允许为任意数量的建筑物的高度增加任意增量(不同建筑物的增量可能不同)。高度为 0 的建筑物的高度也可以增加。增加的建筑物高度不能影响从任何主要方向观察城市得到的天际线。

在不改变从任何主要方向观测到的城市天际线的前提下,返回建筑物可以增加的最大高度增量总和。

示例

示例 1:

输入:grid = [[3,0,8,4],[2,4,5,7],[9,2,6,3],[0,3,1,0]]

输出:35

解释:建筑物的高度如上图中心所示。用红色绘制从不同方向观看得到的天际线。

示例 2:

输入:grid = [[0,0,0],[0,0,0],[0,0,0]]

输出:0

解释:由于所有建筑物的高度都是 0,增加任何建筑物的高度都会改变天际线,因此输出结果为 0。

解题思路

1. 计算天际线:我们需要计算从每个方向(东、南、西、北)观察到的天际线。这可以通过遍历矩阵的每一行和每一列来实现。

2. 计算最大增量:对于每个建筑物,我们需要计算在不改变天际线的前提下,它可以增加的最大高度增量。这可以通过比较建筑物当前高度与对应方向的天际线来实现。

3. 计算总增量:我们将所有建筑物的最大增量相加,得到总增量。

代码实现

```pyho

def maxIcreaseKeepigSkylie(grid):

= le(grid)

skylie = [max(row) for row i grid] + [max(col) for col i zip(grid)] + [skylie[0], skylie]

max_icrease = 0

for i i rage():

for j i rage():

max_icrease += mi(skylie[i + ], skylie[j + 2 ]) - grid[i][j]

reur max_icrease

测试示例

grid = [[3,0,8,4],[2,4,5,7],[9,2,6,3],[0,3,1,0]]

pri(maxIcreaseKeepigSkylie(grid)) 输出:35

这个代码首先计算了天际线,然后遍历每个建筑物,计算最大增量,并最终返回总增量。


玩家评论

此处添加你的第三方评论代码
Copyright © 2017-2024 宝马手游网 版权所有