11_盛最多水的容器
package 数组; /** * https://leetcode-cn.com/problems/container-with-most-water/ * @author Huangyujun * */ public class _11_盛最多水的容器 { /** * 核心:在比较小的范围里找到那个最大的值 * 思路:面接的公式~高(取决于左右两侧两个柱子中比较小的那个柱子) * 但是咱希望高的数值比较大(则需要:在比较小的范围里找到那个最大的值) * @author Huangyujun * */ //正解:双指针法 public class Solution { public int maxArea(int[] height) { int l = 0, r = height.length - 1; int ans = 0; while (l < r) { //面积公式 高:最小的 【左柱子,右柱子】 int area = Math.min(height[l], height[r]) * (r - l); ans = Math.max(ans, area); // 需要找小的:(目的:去获取那个小柱子中的最大值) if (height[l] <= height[r]) { ++l; } else { --r; } } return ans; } } }