给定一个整型数组,例如{2,4,8,3}
则有4根垂直于x轴的木棍
比如说
2是一个长度为2的木棍,在x=0位置
4是一个长度为4的木棍,在x=1位置
8是一个长度为8的木棍,在x=2位置
3是一个长度为3的木棍,在x=3位置
找到2根木棍,它们和x轴构成一个木桶,木桶所能容纳的水最多
方法:定2个指针,一个指向最左,一个指向最右
先计算容积,然后哪一端矮,移动哪端
原因:矮的那端,以后肯定用不到
因为比它高的杆子,对应的水的高是一样的,而长只会变短
比它矮的杆子更不用说了,长变短了,高也变短了,那更加没用了。
int maxArea(int* height, int heightSize)
{
int i,n,left,right,ans=0,water;
n=heightSize;
left=0;
right=n-1;
while(left<right)
{
if(height[left]<height[right])
{
water=height[left]*(right-left);
if(water>ans)
ans=water;
left++;
}
else
{
water=height[right]*(right-left);
if(water>ans)
ans=water;
right--;
}
}
return ans;
}