题解 | #盛水最多的容器#

盛水最多的容器

https://www.nowcoder.com/practice/3d8d6a8e516e4633a2244d2934e5aa47

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param height int整型一维数组 
     * @return int整型
     */
    public int maxArea (int[] height) {
        // 判断失败条件
        if(height.length < 2){
            return 0;
        }

        // 双指针+贪心:从两头开始,每次选最短边舍去
        int left = 0;
        int right = height.length - 1;

        // 遍历获得最优解
        int max = 0;
        while(left != right){
            max = max > Math.min(height[left],height[right])*(right-left) ? max : Math.min(height[left],height[right])*(right-left);
            if(height[left] > height[right]){
                right--;
            }else{
                left++;
            }
        }

        return max;
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 11:15
点赞 评论 收藏
分享
06-26 15:33
青岛工学院 Java
积极的秋田犬要冲国企:他现在邀请我明天面试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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