11. Container With Most Water
方法一:暴力破解
public static int maxArea(Integer[] height) {
int mostWater=0;
for(int i=0;i<height.length-1;i++){
for(int j=i+1;j<height.length;j++){
int tempWater=(j-i)*Math.min(height[i],height[j]);
if(tempWater>mostWater){
mostWater=tempWater;
}
}
}
return mostWater;
}
方法二:双指针法
private static int maxAreaDoubleIndex(Integer[] height){
int maxArea=0;
int l=0,r=height.length-1;
while(l<r){
maxArea=Math.max((r-l)*Math.min(height[l],height[r]),maxArea);
if(height[l]<height[r]){
l++;
}else{
r--;
}
}
return maxArea;
}
本文探讨了容器盛水问题的两种解决方案:暴力破解法与双指针法。暴力破解通过遍历所有可能的容器组合寻找最大水量,而双指针法则采用更高效的策略,从两端向中间逼近,快速定位最优解。双指针法不仅大幅减少了计算复杂度,还提供了对问题本质的深入理解。

被折叠的 条评论
为什么被折叠?



