题解 | 盛水最多的容器
盛水最多的容器
https://www.nowcoder.com/practice/3d8d6a8e516e4633a2244d2934e5aa47
import java.util.*; public class Solution { /** * 双指针 加 贪心算法 * 从两头往开始这个时候宽度最宽 * 往中间移动的时候,宽度变小,保留较大的高,较小的高往中间移动早到一个比之前大的,计算面积 * * @param height * @return */ public int maxArea(int[] height) { if (height == null || height.length == 0) { return 0; } int left = 0; int right = height.length - 1; int maxArea = 0; while (left < right) { if (height[left] <= height[right]) { int area = height[left] * (right - left); left++; maxArea = Math.max(maxArea, area); continue; } if (height[right] < height[left]) { int area = height[right] * (right - left); right--; maxArea = Math.max(maxArea, area); } } return maxArea; } }