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

城市的 天际线 是从远处观察城市时,所有建筑物形成的外部轮廓。从东、南、西、北四个主要方向观测到的 天际线 可能不同。

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

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

示例 1:

输入:grid = [[3,0,8,4],[2,4,5,7],[9,2,6,3],[0,3,1,0]]
输出:35
解释:建筑物的高度如上图中心所示。
用红色绘制从不同方向观看得到的天际线。
在不影响天际线的情况下,增加建筑物的高度:
gridNew = [ [8, 4, 8, 7],
            [7, 4, 7, 7],
            [9, 4, 8, 7],
            [3, 3, 3, 3] ]
示例 2:

输入:grid = [[0,0,0],[0,0,0],[0,0,0]]
输出:0
解释:增加任何建筑物的高度都会导致天际线的变化。

提示:

n == grid.length
n == grid[r].length
2 <= n <= 50
0 <= grid[r][c] <= 100

解题思路:

每一个位置的建筑物从四个角度看都不能超过最高的那个建筑物,比如第一排的建筑物为 { 3, 0, 8, 7},这一排最高的建筑物的高度是8,那么每一列的建筑物不能超过这一排的建筑物,对应的,每一个位置的建筑物不能超过它所在的那一列和那一行,然后要得出所有建筑物能增加到最大值的总和

代码:

class Solution {
public:int maxIncreaseKeepingSkyline(vector<vector<int>>& grid) {int sum = 0;//找到每个元素行和列的最大值中的最小值,就是它可以增加的最大高度vector<int> row(grid.size());vector<int> col(grid[0].size());for(int i=0;i<grid.size();i++){for(int j=0;j<grid[i].size();j++){ //找到行最大值row[i] = max(row[i],grid[i][j]);col[j] = max(col[j],grid[i][j]);}}for(int i=0;i<grid.size();i++){for(int j = 0;j < grid[0].size();j++){if(grid[i][j] < min(row[i],col[j])){sum += min(row[i],col[j]) - grid[i][j];}}}return sum;}
};

每日一题206—保持城市天际线相关推荐

  1. 力扣每日一题(九——保持城市天际线)

    仅以此纪录每日LeetCode所刷题目 题目描述: 示例: 思路: 这个题如果读懂了,思路还是比较简单的,话不多说直接上图: 当时做题是中文版的,没有这张图想了好久.做完之后才发现英文版里有图...其 ...

  2. 牛客每日一题3.31 城市网络 树上倍增

    牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 有一个树状的城市网络(即 n 个城 ...

  3. 【LeetCode】每日一题——保持城市天际线

    目录 题目 一起来读题目 主要思路: 代码实现 写法一: 代码解读 结果: 写法二:列表推导式写法 参考文章: 题目 哈哈是不是看懵了啊,俗话说的好:不会写的题目,好好读多几次题目 读不懂,没关系,我 ...

  4. 刷题 保持城市天际线

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

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

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

  6. 【力扣时间】【807】【中等】保持城市天际线

    保持城市天际线 1.先看题 2.审题 3.思路 4.开工! 5.解读 6.提交 7.咀嚼 8.他人的智慧 9.总结 城市天际线? 1.先看题 点我看题 题目的表述并不清楚,而且已经开始铺陷阱了.所要求 ...

  7. 【备战蓝桥杯】 算法·每日一题(详解+多解)-- day11

    [备战蓝桥杯] 算法·每日一题(详解+多解)-- day11 ✨博主介绍 前言 Dijkstra 算法 流程 网络延迟时间 解题思路 Bellman-Ford 算法 流程 K 站内最便宜的航班 解题思 ...

  8. C++ 每日一题2:关押罪犯

    每日一题2:关押罪犯 题目描述 某城市有两座监狱,共关押着n名罪犯,编号为1,2,3,······,n.很多罪犯之间积怨已久(用怨气值来表示某两名罪犯之间的仇恨程度,怨气值越大,则积怨越多).如果两名 ...

  9. 你不得不看的leetcode常见题(3月份每日一题)——Python

    3月快刷了一半的题想起来应该记录一下-前几天有用JAVA写的有用C++写的,但后面没有标注的都是用Python写的. 小白一枚,有不对的或者需要改进的地方恳请各位大佬批评指正! 文章目录 2020年三 ...

最新文章

  1. Win10无法修改编辑hosts文件
  2. 3d地球旋转html,echarts 3D地球实现自动旋转
  3. 面试字节跳动后的2点总结,建议收藏!
  4. python多线程 不在main_从python线程(不是main)启动pyQt线程有什么不...
  5. ListView的两种使用方法--Android学习笔记
  6. DSB2017第一名代码尝试运行(记录自用)(四)
  7. 11月国内浏览器市场份额:IE、Chrome均遭蚕食
  8. 实现一维卷积神经网络
  9. 2017百度之星资格赛:1003. 度度熊与邪恶大魔王
  10. 「深度」物料成本不到1500的iPhone6s凭什么5288元起售?
  11. [小说连载]张小庆,在路上(2)- 兰博和威震天
  12. 虚拟机vm安装 黑群晖 DS3617xs 6.2
  13. 基于贝叶斯决策理论的分类方法
  14. tfs java_TFS (Team Foundation Server) 2013集成Maven构建
  15. 浏览器下载文件时文件名中文乱码问题
  16. 近期BSN开发常见问题答疑
  17. Visual Studio 2013 下载地址 V12各种版本官方下载网址
  18. kafka集群搭建+权限认证(SASL/SCRAM)+整合springboot
  19. 叠加三角形的绘制,使用turtle库中的turtle.fd()函数和turtle.seth()函数绘制一个叠加等边三角形
  20. openFrameworks教程(一)

热门文章

  1. 高斯分布的点落入心形曲线的一个解决方案
  2. 人像美妆效果实现(贴纸)——OpenGL实现
  3. Mobus通讯协议——Communication protocol
  4. 中忻嘉业科技:怎样分析抖音用户群体画像
  5. 【中级软考—软件设计师】2操作系统2.5进程资源图【**】:2.5.1进程资源图
  6. python判断图片类型_Python使用filetype精确判断文件类型
  7. 电脑提示msvcr90.dll丢失的解决方法
  8. 新时代下如何构建TDSQL-C数据库产品
  9. 陶哲轩实分析--推荐
  10. 移动计算机类岗位综合知识测评,【浙江移动产品运营面试】一开始是笔试,普通的行测题+移动知识+性格测试。-看准网...