找面积最大的长方形
装最多水的容器
http://www.nowcoder.com/questionTerminal/c97c1400a425438fb130f54fdcef0c57
import java.util.*;
public class Solution {
/**
*
* @param height int整型一维数组
* @return int整型
*/
public int maxArea (int[] height) {
// write code here
int left = 0;
int right = height.length - 1;
int maxArea = 0;
while(left < right){
maxArea = Math.max(maxArea,(right - left) * Math.min(height[right],height[left]));
if(height[left] < height[right]){
left++;
}else {
right--;
}
}
return maxArea;
}
}这题困扰了比较久,自己的思路开始是通过找出最大的a和第二个大的b,ab两数之间的距离乘上b即可得到最大面积,但是很显然这个方法行不通。参考了别人的思路,利用指针法,首先吧left,right指针都放在最左最右边,然后先求这两个指针所指向的元素的最小值,之后求两指针的距离,相乘与最大面积比较。得出最大面积后两个元素再比较,如果左指针元素小于有指针元素,则左指针右移,反之右指针左移。知道找到了最大的元素后,对应的指针不动,会继续寻找面积最大的长方形;
