807. 保持城市天际线:贪心算法思路

本文介绍了如何使用贪心算法解决LeetCode的一道题目,确保楼层增高后城市天际线不变。解题关键在于理解天际线概念,即每个方向上的最大楼层。对于每个元素,考虑其左右和上下的视角,增长楼层数为两者最小值。代码实现简洁,可扩展到考虑更多角度的情况。
摘要由CSDN通过智能技术生成

解题思路

个人感觉算是简单题,主要是要读懂题意;
首先要理解城市天际线的概念,天际线实际上就是每行每列中绝对最高的楼层。会根据角度的变化而改变,这边只有4个角度。
由题意可知,楼层增高后,不管哪个角度看,天际线都和原来保持一致。
其实一个元素需要考虑的就两个方向的视角,比如以第一个元素grid[0][0]为例;
从右往左看,天际线是行里最大的元素,这时候可以增长的层数就是最大元素-此元素楼高记作L1
从上往下看,天际线是列里最大的元素,同理可得L2;
由于不能改变天际线,所以这个增长楼层数应该是取这L1和L2中的最小值。
代码实现如下:

代码

class Solution {
   
public:
    int maxIncreaseKeepingSkyline(vector<vector<int>>& grid)
    {
   
        int iSize = grid[0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值