leetcode--11. 盛最多水的容器(双指针)
记录
19:46 2024-2-15
https://leetcode.cn/problems/container-with-most-water/
利用双指针来解,一个在头,一个在尾,每次最小的那个进行移动,然后计算出容积。
ps:刚开始想到了用单调栈来解决,但这道题和单调栈那个例题还不一样。然后暴力解当然超时了,然后学习到了双指针(..双指针应该挺常见的不过我没想到
点击查看代码
class Solution {
public:
//暴力
// int maxArea(vector<int>& height) {
// int result = 0;
// for(int i = 0; i < height.size() ; i++) {
// for(int j = i + 1; j < height.size(); j++) {
// if(height[i] <= height[j]) {
// result = max(result, (j - i) * height[i]);
// } else {
// result = max(result, (j - i) * height[j]);
// }
// }
// }
// return result;
// }
int maxArea(vector<int>& height) {
int result = 0;
// 双指针
int i = 0, j = height.size() - 1;
while(i < j) {
result = max(result, min(height[i], height[j]) * (j - i));
if(height[i] < height[j]) i++;
else j--;
}
return result;
}
};