在二维数组grid中,grid[i][j]代表位于某处的建筑物的高度。 我们被允许增加任何数量(不同建筑物的数量可能不同)的建筑物的高度。 高度 0 也被认为是建筑物。

最后,从新数组的所有四个方向(即顶部,底部,左侧和右侧)观看的“天际线”必须与原始数组的天际线相同。 城市的天际线是从远处观看时,由所有建筑物形成的矩形的外部轮廓。 请看下面的例子。

建筑物高度可以增加的最大总和是多少?

例子:
输入: grid = [[3,0,8,4],[2,4,5,7],[9,2,6,3],[0,3,1,0]]
输出: 35
解释: 
The grid is:
[ [3, 0, 8, 4], 
  [2, 4, 5, 7],
  [9, 2, 6, 3],
  [0, 3, 1, 0] ]

从数组竖直方向(即顶部,底部)看“天际线”是:[9, 4, 8, 7]
从水平水平方向(即左侧,右侧)看“天际线”是:[8, 7, 9, 3]

在不影响天际线的情况下对建筑物进行增高后,新数组如下:

gridNew = [ [8, 4, 8, 7],
            [7, 4, 7, 7],
            [9, 4, 8, 7],
            [3, 3, 3, 3] ]

说明:

1 < grid.length = grid[0].length <= 50。
 grid[i][j] 的高度范围是: [0, 100]。
一座建筑物占据一个grid[i][j]:换言之,它们是 1 x 1 x grid[i][j] 的长方体。

解题思路:

计算行列限制。

我们首先计算出天际线的值。显然,从顶部和底部看到的天际线是相同的,每一个位置的天际线高度是对应列的建筑物高度最大值,即 col_maxes = [max(column_0), max(column_1), ...];从左侧和右侧看到的天际线也是相同的,每一个位置的天际线高度是对应行的建筑物高度最大值,即 row_maxes = [max(row_0), max(row_1), ...]。

对于 grid 中的每一个元素,我们可以将它增加到的最大高度为该元素行天际线与列天际线高度的较小值,即 min(row_maxes[r], col_maxes[c])。如果再增加高度,就会导致行天际线或列天际线中的至少一个发生变化。

由于 grid 中的每一个元素的高度增加都是独立的,因此我们贪心地把每一个元素都增加到最大值,就可以得到增加的最大总和。

LeetCode 807 保持城市天际线相关推荐

  1. LeetCode 807. 保持城市天际线 / 630. 课程表 III(贪心+优先队列)/ 851. 喧闹和富有(拓扑排序)

    807. 保持城市天际线 2021.12.13 每日一题 题目描述 给你一座由 n x n 个街区组成的城市,每个街区都包含一座立方体建筑.给你一个下标从 0 开始的 n x n 整数矩阵 grid ...

  2. Java实现 LeetCode 807 保持城市天际线 (暴力)

    807. 保持城市天际线 在二维数组grid中,grid[i][j]代表位于某处的建筑物的高度. 我们被允许增加任何数量(不同建筑物的数量可能不同)的建筑物的高度. 高度 0 也被认为是建筑物. 最后 ...

  3. 天际线java_Java实现 LeetCode 807 保持城市天际线 (暴力)

    807. 保持城市天际线 在二维数组grid中,grid[i][j]代表位于某处的建筑物的高度. 我们被允许增加任何数量(不同建筑物的数量可能不同)的建筑物的高度. 高度 0 也被认为是建筑物. 最后 ...

  4. LeetCode 807. 保持城市天际线

    文章目录 1. 题目 2. 解题 1. 题目 在二维数组grid中,grid[i][j]代表位于某处的建筑物的高度. 我们被允许增加任何数量(不同建筑物的数量可能不同)的建筑物的高度. 高度 0 也被 ...

  5. LeetCode - 807. 保持城市天际线 - Java

    文章目录 题目要求 分析 解题 先获得 这个街区组成的城市 的 行数 将这个城市 看成 一个 n*n 正方体,题目的例子的图形也是这么看的.而且还是二维数组.我们要做的是 创建 2个数组,分别是 ro ...

  6. LeetCode:807. 保持城市天际线————中等

    题目 807. 保持城市天际线 在二维数组grid中,grid[i][j]代表位于某处的建筑物的高度. 我们被允许增加任何数量(不同建筑物的数量可能不同)的建筑物的高度. 高度 0 也被认为是建筑物. ...

  7. 807. 保持城市天际线

    链接:807. 保持城市天际线 题解: class Solution { public:int maxIncreaseKeepingSkyline(vector<vector<int> ...

  8. 807.保持城市天际线

    题目描述 给你一座由 n x n 个街区组成的城市,每个街区都包含一座立方体建筑.给你一个下标从 0 开始的 n x n 整数矩阵 grid ,其中 grid[r][c] 表示坐落于 r 行 c 列的 ...

  9. 【LeetCode】807. 保持城市天际线

    1.题目描述: 在二维数组grid中,grid[i][j]代表位于某处的建筑物的高度. 我们被允许增加任何数量(不同建筑物的数量可能不同)的建筑物的高度. 高度 0 也被认为是建筑物.最后,从新数组的 ...

最新文章

  1. android 动态人脸识别码,android OpenCV研究之动态人脸识别
  2. oracle 按日输出 取整数,Oracle按日周月分組統計,及next_day()函數詳解
  3. Yarn ResourceManager High Availability
  4. Linux MySQL5.5的安装
  5. 第一章数据库系统基础
  6. Java常用类(1)--字符串相关类String、StringBuffer、StringBuilder全面知识
  7. Spring Cloud实战小贴士:turbine如何聚合设置了context-path的hystrix数据
  8. 华为鸿蒙还会不会推出,华为如果把鸿蒙独立出来,让小米、魅族和蓝绿厂参股进来,会不会超越安卓?...
  9. bash执行mysql的warning怎么屏蔽_使用mysql从终端禁止警告消息,但密码写在bash脚本...
  10. HALCON不同图像格式保存时间对比表
  11. MyBatis开发经验总结
  12. Atitit json数据查询法 jsonpath 目录 1.1. 1.概述 1 1.2. 3.2。经营者特殊符号 1 1.3. # JSONPath expressions 2 1.4. Xpa
  13. 网络安全实验室 基础题 解析
  14. linux下 Wowza安装与ffmpeg测试
  15. 杨百翰大学计算机科学专业,杨百翰大学计算机科学硕士.pdf
  16. 邮件服务器域名怎么查看,如何查看企业邮箱是哪里的域名
  17. Golang 多版本管理
  18. 柠檬智慧 java,智慧职教2020Java程序设计基础(哈尔滨职业技术学院)作业答案
  19. 冬天来了,春天还远吗
  20. Java实现 蓝桥杯 算法训练 天数计算

热门文章

  1. Spring——Bean管理-xml方式进行属性注入
  2. android+解锁图案错误次数多+老人,手贱密码图案解锁错了15次,不做死就不会死~!...
  3. android禁用电话功能,Android智能手机屏蔽电话与屏蔽安装软件功能
  4. 【WEB前端进阶之路】 HTML 全路线学习知识点梳理(上)
  5. ACwing 311. 月之谜 数位dp
  6. 100A有源电力滤波器(APF)MATLAB仿真,两种谐波补偿模式:全阶补偿和选阶补偿
  7. java判断文件写完_Java_判断文件是否写入完成
  8. 自考大专学历被单位认可吗
  9. fincial words
  10. 当机会来临的时候,你准备好了吗?