题解 | #盛水最多的容器#
盛水最多的容器
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; } }