码迷,mamicode.com
首页 > 其他好文 > 详细

[leetcode] 11.盛最多水的容器

时间:2018-06-26 22:41:09      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:智商   water   etc   贪心   block   rip   直接   长度   most   

盛最多水的容器

题意好绕,看半天都没懂要干什么。
我直接上个图可能就能一眼看明白了:
技术分享图片

总之,当明白题意后,直接就能想到暴力法枚举所有可能性,不过如果再画一下图基本就能发现:两线段之间形成的区域总是会受到其中较短那条长度的限制。
我举个例子,对于所有以(1,a1)为左边构成的矩阵,最大的一个肯定在右边(n,an)开始数,第一个大于等于ai的边,我们记成aj。即以a1为左边的最大矩阵肯定是 以right边从(j,aj)~(n,an)构成矩阵中的其中一个。实际上,对于(1,a1)~(j,aj)的边,我们就没有必要去算了。然后,以(2,a2)为左边,此时注意,如果a2小于等于a1,那么不必算了。如果a2>a1,那么此时与a1同理。依次类推。。(我想到的这个思路感觉好绕- -)

官方给出的双指针法好像更清晰易懂一些,贪心思想:

最初我们考虑由最外围两条线段构成的区域。现在,为了使面积最大化,我们需要考虑更长的两条线段之间的区域。如果我们试图将指向较长线段的指针向内侧移动,矩形区域的面积将受限于较短的线段而不会获得任何增加。但是,在同样的条件下,移动指向较短线段的指针尽管造成了矩形宽度的减小,但却可能会有助于面积的增大。因为移动较短线段的指针会得到一条相对较长的线段,这可以克服由宽度减小而引起的面积减小。

题不错,其实还比较考验智商的,打算把他选为面试题

代码不贴了

[leetcode] 11.盛最多水的容器

标签:智商   water   etc   贪心   block   rip   直接   长度   most   

原文地址:https://www.cnblogs.com/acbingo/p/9231465.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!