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;
}
}
}

 


作者:一乐乐​