盛最多水的容器

题解: 这题依赖于双指针[l,r]。盛水容器可以看作是矩形面积=长*高。当左边指针l在最左边,右边指针r在最右边时,长最大,高是两者高度较小者。当指针往里收时,长会变小,那么高如果变大,矩形面积才有可能变大,因此判断左右高度,移动高度较小的指针往里收,这样枚举到l>=r时,就可以得到最大面积的矩形。

class Solution {
    public int maxArea(int[] height) {
        int l = 0, r = height.length - 1;
        int ans = 0;
        while (l < r) {
            ans = Math.max(Math.min(height[l], height[r]) * (r - l), ans);
            if (Math.min(height[l], height[r]) == height[l]) l ++;
            else r --;
        }
        return ans;
    }
}
全部评论

相关推荐

12-01 18:27
已编辑
湖南科技大学 后端工程师
点赞 评论 收藏
分享
头像
10-27 15:50
门头沟学院 Java
想进开水团喝开水:有一种店 只能外卖 不能堂食 你猜为什么
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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