leecode11 盛水最多的容器

举报
兔老大 发表于 2021/04/20 01:03:43 2021/04/20
【摘要】 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且 n 的值...

给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

说明:你不能倾斜容器,且 n 的值至少为 2。

思路:两个指针指向两端,计算答案,更新最优。

之后短的指针向中间移动,因为所有以短指针为端点的情况都不会超过这个数(之后的情况都是宽度更小,由于短指针的限制,高度不会更高)。

 


  
  1. public class Solution {
  2. public int maxArea(int[] height) {
  3. int maxarea = 0, l = 0, r = height.length - 1;
  4. while (l < r) {
  5. maxarea = Math.max(maxarea, Math.min(height[l], height[r]) * (r - l));
  6. if (height[l] < height[r])
  7. ++l;
  8. else
  9. --r;
  10. }
  11. return maxarea;
  12. }
  13. }

文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。

原文链接:fantianzuo.blog.csdn.net/article/details/103244211

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。