刷题 保持城市天际线
题目描述:
在二维数组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] 的长方体。
解题思路
1.找到二维数组每行每列的最大值(城市天际线)。
2.用较小的天际线减去当前建筑物高度,就是可以增加的高度,然后累加。
解题代码(c++)
class Solution {
public:int maxIncreaseKeepingSkyline(vector<vector<int>>& grid) {int n = grid.size();vector<int> rowMax(n);vector<int> colMax(n);for(int i = 0 ; i < n;i++){for(int j = 0 ; j < n;j++){rowMax[i] = max(rowMax[i],grid[i][j]);colMax[j] = max(colMax[j],grid[i][j]);}}int ans = 0;for(int i = 0 ; i < n;i++){for(int j = 0 ; j < n;j++){ans += min(rowMax[i],colMax[j])-grid[i][j];}}return ans;}
};
刷题 保持城市天际线相关推荐
- 【LeetCode】每日一题——保持城市天际线
目录 题目 一起来读题目 主要思路: 代码实现 写法一: 代码解读 结果: 写法二:列表推导式写法 参考文章: 题目 哈哈是不是看懵了啊,俗话说的好:不会写的题目,好好读多几次题目 读不懂,没关系,我 ...
- 每日一题206—保持城市天际线
给你一座由 n x n 个街区组成的城市,每个街区都包含一座立方体建筑.给你一个下标从 0 开始的 n x n 整数矩阵 grid ,其中 grid[r][c] 表示坐落于 r 行 c 列的建筑物的 ...
- C#LeetCode刷题-线段树
线段树篇 # 题名 刷题 通过率 难度 218 天际线问题 32.7% 困难 307 区域和检索 - 数组可修改 42.3% 中等 315 计算右侧小于当前元素的个数 31.9% 困难 493 翻转对 ...
- C#LeetCode刷题-树状数组
树状数组篇 # 题名 刷题 通过率 难度 218 天际线问题 32.7% 困难 307 区域和检索 - 数组可修改 42.3% 中等 315 计算右侧小于当前元素的个数 31.9% 困难 493 翻转 ...
- C#LeetCode刷题-堆
堆篇 # 题名 刷题 通过率 难度 23 合并K个排序链表 39.4% 困难 215 数组中的第K个最大元素 51.5% 中等 218 天际线问题 32.9% 困难 239 滑动窗口最大值 37.1% ...
- C#LeetCode刷题-分治算法
分治算法篇 # 题名 刷题 通过率 难度 4 两个排序数组的中位数 C#LeetCode刷题之#4-两个排序数组的中位数(Median of Two Sorted Arrays)-该题未达最优解 30 ...
- 基于mybatis-jsp-bootstrap-servlet-mysql-maven的Javaweb课程设计--刷题后台管理系统(考试题目管理系统)
第一章 需求分析 计算机技术没有应用到考试上时,组织一次考试只是要经过五步:人工出题,考生考试,人工阅卷,成绩评估和试卷分析,这是一项十分繁琐和容易出错的工作,教师的工作量非常的大.很明显,传统的考试 ...
- 【力扣时间】【807】【中等】保持城市天际线
保持城市天际线 1.先看题 2.审题 3.思路 4.开工! 5.解读 6.提交 7.咀嚼 8.他人的智慧 9.总结 城市天际线? 1.先看题 点我看题 题目的表述并不清楚,而且已经开始铺陷阱了.所要求 ...
- LeetCode刷题之1436. 旅行终点站
LeetCode刷题之1436. 旅行终点站 我不知道将去向何方,但我已在路上! 时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! 题目: 给你一份旅游线路图,该线路图中的旅行线路 ...
最新文章
- python获取ftp所有文件名_在Python中获取最新的FTP文件夹名称
- opencv 标记有数字的区域
- hashcode()和hash()
- 究竟是“二O一六年”还是“二零一六年”?嘴上会说可你会写吗?
- python字符串startswith_Python 字符串 startswith() 使用方法及示例
- 浏览器从输入URL到页面渲染过程 —— 浏览器的进程与线程
- linux中查看mysql版本的方法汇总
- Unity3D之UGUI基础6:Slider滑条
- 453. Minimum Moves to Equal Array Elements 一次改2个数,变成统一的
- Jquery Sparklines ref
- 制作chrome插件
- 牛逼神器第三弹--nth_element函数
- LIN总线协议详解4(进度表)
- 肌酸报告:17个肌酸使用常见问题解答
- python 重定向 网址错_Python URL重定向问题
- Qpython SL4A服务调用GPS定位获取获取位置信息
- python代码混淆工具,Python版代码混淆工具
- 物联卡是正规卡还是漏洞卡?一篇最简单明了的解释!
- 电脑系统怎么重装?保姆级Windows 8系统安装教程
- 【JVM】8_对象优先在Eden分配
热门文章
- MFC用ODBC连接db2数据库
- 第4节:Java 修饰符、Java 运算符、Circle 【多测师_王sir】
- 关闭贱贱的window10的自动更新系统
- 网件 ip 冲突 vpn_【干货三十一节】数通IP课堂笔记第十五弹,人生贵在行动!...
- html修改鼠标右键,怎么更改鼠标右键的菜单
- Java学习笔记之——Java介绍
- 飞机小游戏 java源码下载
- RTP 与 RTCP 协议
- Pyecharts Geo创建中国可视化地图
- Springboot环境下配置Sentinel,然后还报错了!!!爆红XXXXX