LeetCode - 807. 保持城市天际线 - Java
2021/12/13 22:20:59
本文主要是介绍LeetCode - 807. 保持城市天际线 - Java,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 题目要求
- 分析
- 解题
- 先获得 这个街区组成的城市 的 行数
- 将这个城市 看成 一个 n*n 正方体,题目的例子的图形也是这么看的。而且还是二维数组。我们要做的是 创建 2个数组,分别是 rowMax 和 colMax, 意思就是 rowMax 记录每一行的最高的那栋楼的层数, colMax记录每一行列的最高的那栋楼的层数。![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=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];// 用这种方式创建的数组,所有元素默认为 0 int[] colMax = new int[n];// 用这种方式创建的数组,所有元素默认为 0 for(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的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?