题解 | #盛水最多的容器#
盛水最多的容器
https://www.nowcoder.com/practice/3d8d6a8e516e4633a2244d2934e5aa47
package com.hhdd.双指针;
/**
* 不会做
*
* @Author huanghedidi
* @Date 2022/8/10 23:38
*/
public class 盛水最多的容器 {
public static void main(String[] args) {
// int[] height = {1, 7, 3, 2, 4, 5, 8, 2, 7};
int[] height = {5,4,3,2,1,5};
int res = maxArea(height);
System.out.println("res = " + res);
}
/**
* 双指针 分别指向头尾
* area = min(height[i],height[j]) * (j-i+1)
*
* @param height
* @return
*/
public static int maxArea(int[] height) {
// write code here
int left = 0;
int right = height.length - 1;
int res = 0;
while (left < right) {
int tmp = (right - left ) * Math.min(height[left], height[right]);
res = Math.max(res, tmp);
if (height[left] < height[right]) {
left++;
} else {
right--;
}
}
return res;
}
}
腾讯成长空间 5960人发布
