[算法练习11-14]

本文详细分析了LeetCode上的42号问题——接雨水。题目看似简单,但局部处理方法可能导致错误,如图示反例所示。正确的策略是,当找到一个凸点后,需要找到右侧第一个大于等于该凸点的高度作为边界。若没有找到,则选择最大高度作为边界,以此类推。这种全局思考的方式能避免误区,确保算法正确性。
摘要由CSDN通过智能技术生成

回顾下算法,练习下分析处理问题。

力扣 42接雨水 问题分析思路

https://leetcode-cn.com/problems/trapping-rain-water/

这个题意比较容易理解,初看好像很容易,把大于相邻左右点的位置作为一个凸点,再找相邻的凸点的容纳空间,但是这样的局部观处理是有问题的,下图就是一个反例。

从这个图里可以看出,左边凸点确定后,不能简单的去找下一个凸点作为右边高度,因为后面可以会有一个更大的高度,如5位置,所以左边的位置确定后,需要找到右边第一个大于等于左凸点的位置作为右边的边界。

如果没有大于等于的凸点,应该选择最大的凸点位置作为右边界,按照这个思路持续进行下去。

问题的总体情况在分析的时候要考虑清楚,不然就会出差错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值