盛最多水的容器——数组专题(大白话说思路)

盛最多水的容器——数组专题

思路:

  • 双指针,p指针指向数组第一个数,q指针指向数组最后一个数,用一个变量记录最大雨水量
  • 计算当前雨水量,若比最大雨水量大,更新最大雨水量。如果nums[p]<nums[q],p往里移一位(p++),反之q往里移一位(q–)
  • 重复上一步操作,直至两指针相遇,返回最大雨水量

重点:
小伙伴一定有疑问,为什么nums[p]<nums[q],p往里移一位(p++),反之q往里移一位(q–)就可以覆盖到所有可能是最大雨水量的结果呢???

反证法,假设数组的最大雨水量出自组合(p,q),是由(p-1,q)且nums[p-1]>=nums[p]转移来的,显然min(nums[p-1],nums[q]) ×(q-(p-1)
)的雨水量要大于最大雨水量min(nums[p],nums[q] )×(q-p)),与假设相悖,另一种情况(p,q+1)同理。所以nums[p]<nums[q],p往里移一位(p++),反之q往里移一位(q–)就可以覆盖到所有可能是最大雨水量的结果!!!

代码见力扣题解,思路更为重要!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值