题目链接
https://leetcode-cn.com/problems/container-with-most-water/
注意点
解法
解法一:贪心/双指针
题目要求求出最大盛水量,如何求出这个最大盛水量是解题思路的关键步骤。
盛水量=底*矮边高
所以我们可以先把底置为最大,即用两个指针,分别指向首尾。
这样当你将底变小的时候,要使得盛水量有可能增大,那么矮边的高一定是要增加的,所以对每个底求出对应的盛水量之后,每次移动指针都选择舍弃矮边,留下高边,再计算盛水量。
代码
class Solution {
public:
int maxArea(vector<int>& height) {
int left=0,right=height.size()-1;
int res=0;
while(left!=right){
int high=height[left]<height[right] ? height[left++]:height[right--];
if(res<high*(right-left+1)){
res=high*(right-left+1);
}
}
return res;
}
};
遇到问题
小结
双指针+贪心