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

盛水最多的容器

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

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param height int整型一维数组
     * @return int整型
     */
    public int maxArea (int[] height) {
        // write code here
        if(height.length<=1) return 0;
        int i = 0;
        int j = height.length - 1;
        int left = height[i];
        int right = height[j];
        int maxValue = Math.min(height[i], height[j]) * (j - i);
        while (i < j) {
            if (left < right) {
			  	// 比left数据小的,没必要计算了,必小
                while (height[i] <= left && i < j) {
                    i++;
                }
            } else {
			  	// 比right数据小的,没必要计算了,必小
                while (height[j] <= right && i < j ) {
                    j--;
                }
            }
            if (i < j) {
                maxValue = Math.max(maxValue, Math.min(height[i], height[j]) * (j - i));
                left = height[i];
                right = height[j];
            }
        }
        return maxValue;
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务