博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode(11)题解: Container With Most Water
阅读量:4992 次
发布时间:2019-06-12

本文共 1437 字,大约阅读时间需要 4 分钟。

https://leetcode.com/problems/container-with-most-water/

题目:

Given n non-negative integers a1a2, ..., an, where each represents a point at coordinate (iai). n vertical lines are drawn such that the two endpoints of line i is at (iai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.

Note: You may not slant the container.

 

思路:

考虑从边界向里缩减范围。最重要的是注意到,假设现在边界的height是a和b,那么想在内部有别的点能比a、b框成的体积大,那么这个点一定得比a、b中的最小者大。所以不断从边界height较小的点向内缩减,直到内部为空。

只需遍历数组一次,所以复杂度为O(n)。

 

AC代码:

1 class Solution { 2 public: 3     int maxArea(vector
& height) { 4 int i,j,n=height.size(),a=0,b=n-1,contain=min(height[0],height[n-1])*(n-1); 5 while(a
height[a]) 9 break;10 }11 if(min(height[i],height[b])*(b-i)>contain){12 contain=min(height[i],height[b])*(b-i);13 }14 a=i;15 }16 else{17 for(j=b;j>a;j--){18 if(height[j]>height[b])19 break;20 }21 if(min(height[j],height[a])*(j-a)>contain){22 contain=min(height[j],height[a])*(j-a);23 }24 b=j;25 }26 }27 return contain;28 }29 };

 

转载于:https://www.cnblogs.com/aezero/p/4706192.html

你可能感兴趣的文章
thinkphp5 tp5 七牛云 上传图片
查看>>
Windows 7 x64 安装Windows SDK 7.1失败的原因及解决方法
查看>>
VM下Linux网卡丢失(pcnet32 device eth0 does not seem to be ...)解决方案
查看>>
第一阶段意见汇总以及改进
查看>>
再说virtual
查看>>
随笔:技术流可以这样写博客
查看>>
[优化]JavaScript 格式化带有占位符字符串
查看>>
打JAR包
查看>>
大图轮播
查看>>
UNIX环境高级编程读书笔记
查看>>
java awt 乱码问题
查看>>
矩阵中的路径
查看>>
unity回调函数范例
查看>>
linux下给php安装curl、gd(ubuntu)
查看>>
Java自带的Logger使用-代码摘要
查看>>
Java设计模式系列 — 构造器模式
查看>>
MySQL执行计划explain的key_len解析
查看>>
Windows Phone开发(9):关于页面状态 转:http://blog.csdn.net/tcjiaan/article/details/7292160...
查看>>
android 通过数组,流播放声音的方法
查看>>
Spring入门篇
查看>>