找面积最大的长方形

装最多水的容器

http://www.nowcoder.com/questionTerminal/c97c1400a425438fb130f54fdcef0c57

题目链接:https://www.nowcoder.com/practice/c97c1400a425438fb130f54fdcef0c57?tpId=46&rp=1&ru=%2Fta%2Fclassic-code&qru=%2Fta%2Fclassic-code%2Fquestion-ranking

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

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 14:35
点赞 评论 收藏
分享
重生我想学测开:嵌入式的问题,我准备入行京东外卖了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务