没一个元素如果要改变都不可以超过他所在的列的最大值和行的最大值当中的较小值才能不破坏skyline。首先找出每列最大的,随后遍历每个元素,找出改元素所在行最大数,比较得出较小的值,-去当前元素值,就是增加值。加到res中。
class Solution:
def maxIncreaseKeepingSkyline(self, grid: List[List[int]]) -> int:
maxvalineachcol = [max([grid[i][j] for i in range(len(grid[0]))]) for j in range(len(grid))]
res = 0
for i in range(len(grid)):
maxinthisrow = max(grid[i])
for j in range(len(grid[0])):
maxvalinthiscol = maxvalineachcol[j]
increase = min(maxinthisrow, maxvalinthiscol)
res += increase - grid[i][j]
return res