文章目录

  • 题目要求
  • 分析
  • 解题
    • 先获得 这个街区组成的城市 的 行数
    • 将这个城市 看成 一个 n*n 正方体,题目的例子的图形也是这么看的。而且还是二维数组。我们要做的是 创建 2个数组,分别是 rowMax 和 colMax, 意思就是 rowMax 记录每一行的最高的那栋楼的层数, colMax记录每一行列的最高的那栋楼的层数。![在这里插入图片描述](https://img-blog.csdnimg.cn/b08daaa4190c4c07b1c9468bebf555c8.png)
    • 然后开始遍历 这个 二维数组,获取 我们想要存入 这两个special的数组里
    • 开始加盖房子了
  • 最后 附上程序

题目要求


 

分析

总的来说:不需要跟题目一样,去思考东南西北四个方向的情况,只需思考两个方向就够。因为东西 和 南北,它们各自都是相对,也就是说无论是 在 东边,还是西边,它们观看效果就是左右位置换了一下,南北也是同理。

好,现在这个基础上,我们去思考一样东西
每一栋建筑物,它的高度说不准,有高有低,但是从一个方向去看,人们总是先看到最高那一栋,如果有些比它矮一点的,那还好,能看见,但是,如果在后面,就被高的挡住了,就看不见了、

为什么要说这个,是为了开拓你们思想,或者说帮你们回忆小学几何题,你来下面这个图

再来看题目 这个 条件

现在展开想象,如果一栋楼,加盖了几层,超过了 这列 或 这行 的 建筑 中的 最高建筑,我们观察形状将会发生改变。


解题

先获得 这个街区组成的城市 的 行数



将这个城市 看成 一个 n*n 正方体,题目的例子的图形也是这么看的。而且还是二维数组。我们要做的是 创建 2个数组,分别是 rowMax 和 colMax, 意思就是 rowMax 记录每一行的最高的那栋楼的层数, colMax记录每一行列的最高的那栋楼的层数。


然后开始遍历 这个 二维数组,获取 我们想要存入 这两个special的数组里


开始加盖房子了


最后 附上程序

class Solution {public int maxIncreaseKeepingSkyline(int[][] grid) {int n = grid.length;int[] rowMax = new int[n];// 用这种方式创建的数组,所有元素默认为 0int[] colMax =  new int[n];// 用这种方式创建的数组,所有元素默认为 0for(int i = 0;i < n;i++){for(int j = 0;j < n;j++){// 将这一行数据,进行比较,最终的结果就是 这一行的最大值// 将每一行的最大值,存入我们 rowMax 数组rowMax[i] = Math.max(rowMax[i],grid[i][j]);// 将每一列的数据,与 colMax 当中 元素进行比较,将最大值存入 colMax 当中colMax[j] = Math.max(colMax[j],grid[i][j]);}}// 题目 要求是 统计,所以每个都是遍历int count =0;// 用来记录 总加盖层数for(int i = 0;i < n;i++){for(int j = 0;j < n;j++){count += Math.min(colMax[j],rowMax[i]) - grid[i][j];}}return count;}
}

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

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

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

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

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

  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 保持城市天际线

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

  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. java leetcode之[中等]807. 保持城市天际线

    题目的链接在这里:https://leetcode-cn.com/problems/max-increase-to-keep-city-skyline/ 目录 题目大意 一.示意图 二.解题思路 暴力 ...

最新文章

  1. 炫彩流光按钮 html+css
  2. Shell基础:变量类型 运算符
  3. oracle 12c chad,ORACLE 12.2RAC之问题 ora.chad OFFLINE
  4. “80后”作家应扮演更重要的角色
  5. Linux c之函数手册
  6. C/S、B/S的区别
  7. WebApi单元测试记录
  8. Journaling日志功能
  9. 闲来无事写个qt实现机器人
  10. **LPC1788加密与解密方法**
  11. Jdk8 中文 api(百度网盘免费下载)
  12. LeetCode 1055. 形成字符串的最短路径
  13. Adobe Acrobat 如何通过书签制作多级目录
  14. 彼得林奇的成功投资一——作为消费者来选股
  15. Jenkins使用FTP上传文件报错问题处理
  16. Chess.com:象棋社区网站每月访问量达 2.8 亿,年收入在 5000 万至 1 亿之间
  17. 正宇丨生活其实很简单,想通了每天都是晴天
  18. Container With Most Water-水桶装水问题
  19. Postman测试工具调试接口详细教程【向后端发送Json数据并接收返回的Json结果】
  20. 2020移动apn接入点哪个快_手机资讯:5G 网络和现在 iPhone 使用的 Wi-Fi 有什么区别速度会更快吗...

热门文章

  1. 清华大学计算机系学术委员会,蔡懿慈
  2. Torvalds 拒绝接受 ZFS 文件系统
  3. 使用NLTK对文档进行分句
  4. workerman入门之GatewayWorker的使用
  5. 基于C++控制台(Windows平台)的一个吃豆人小游戏
  6. 解读2018:13家开源框架谁能统一流计算?
  7. 视频全屏非全屏切换,状态栏动态显示隐藏兼容性解决
  8. K3 CLOUD计划管理之计划方案(MPS/MRP)
  9. 企业精益生产之成本管理控制的四大要点
  10. win10+AV1+VS2017 编译器内部错误