
class Solution {
public:
int CntArea(int i1, int i2, int val1, int val2){
return (i2 - i1)*(val1<val2? val1: val2);
}
int Cntmin(int i1, int i2, int val1, int val2){
return val1<val2? val1: val2;
}
int maxArea(vector<int>& height) {
int left = 0, right = height.size()-1;
//vector<int> max ;
int max = CntArea(left, right, height[left], height[right]);
int h = Cntmin(left, right, height[left], height[right]);
while(left < right){
if (height[left] == h){
while(left<right && height[left] <= h) left++;
h = Cntmin(left, right, height[left], height[right]);
max = (CntArea(left, right, height[left], height[right])>max? CntArea(left, right, height[left], height[right]): max);//若max更大,更新
}
else{ //height[right] == h
while(left<right && height[right] <= h) right--;
h = Cntmin(left, right, height[left], height[right]);
max = (CntArea(left, right, height[left], height[right])>max? CntArea(left, right, height[left], height[right]): max);
}
}
return max;
}
};

本文深入探讨了一种用于寻找二维数组中能盛放最多水量的算法。通过双指针技术,逐步调整左右边界,以找到最佳盛水高度。算法在每次迭代中,依据当前高度最小的边界进行移动,确保效率最大化。
563

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



