找面积最大的长方形
装最多水的容器
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指针都放在最左最右边,然后先求这两个指针所指向的元素的最小值,之后求两指针的距离,相乘与最大面积比较。得出最大面积后两个元素再比较,如果左指针元素小于有指针元素,则左指针右移,反之右指针左移。知道找到了最大的元素后,对应的指针不动,会继续寻找面积最大的长方形;