タイトル
ポータルリーコード11
解決策
ダブルポインターの考え方は、問題のスケールを小さくすることです。現在の境界の高さが小さいポイントでは、この境界を境界として使用する最適解が更新されているため、削除して間隔を狭めることができます。
class Solution {
public:
int maxArea(vector<int>& height) {
int sz = height.size(), s = 0, t = sz - 1, res = 0;
while(s < t){
int m = min(height[s], height[t]);
res = max(res, (t - s) * m);
if(m == height[s]) ++s;
else --t;
}
return res;
}
};