static
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
/**
* 双指针
*
* @param heightArr heightArr
* @return int
* @author zhengyongpan
* @since 2021/12/11 17:59
*/
public int maxArea(int[] heightArr) {
int leftPos = 0;
int rightPos = heightArr.length - 1;
int maxArea = 0;
int maxHeight = 0;
int leftHeight = heightArr[leftPos];
int rightHeight = heightArr[rightPos];
while (leftPos < rightPos) {
// 矩形高度是左右两根柱子的较小值
int height = Math.min(leftHeight, rightHeight);
if (height > maxHeight) {
// 只有矩形高度增加了, 面积才有可能增加
maxArea = Math.max(maxArea, height * (rightPos - leftPos));
}
// 把较小的柱子索引往中间移动
if (leftHeight <= rightHeight) {
leftHeight = heightArr[++leftPos];
} else {
rightHeight = heightArr[--rightPos];
}
}
return maxArea;
}
}
//leetcode submit region end(Prohibit modification and deletion)
leetcode 11. 盛最多水的容器 [java][双指针]
最新推荐文章于 2024-10-03 23:42:25 发布