题目大意:
有一个高度的数组,从中找出两个高度,这两个高度形成一个水桶,求出能够满足随同的最大体积。
解法:
1、两层for循环,每两个高度之间算一下体积,返回最大的体积(估计会超时)。
2、设置一个两个指针,一个指向头,一个指向尾部。算一下体积,如果头指针高度小于尾指针高度,头指针加一,反之尾指针加一,如此来遍历整个数组。
1 public class Solution { 2 public int maxArea(int[] height) { 3 4 int left = 0; 5 int right = height.length-1; 6 7 int contain = 0; 8 while(left != right) 9 { 10 int h = (height[left] < height[right])? height[left]:height[right]; 11 contain = (contain > (right - left)*h)? contain:(right - left)*h; 12 if(height[left] < height[right]) 13 left++; 14 else 15 right--; 16 17 } 18 19 return contain; 20 } 21 }