11. 盛最多水的容器 - 力扣(LeetCode)

贪心、双指针

思维有点跳跃,思维题

两边开始的双指针,无需找到特定解,记录并比较每一次结果即得出答案:双指针往中间移动(两个指针中较低的往中间移动),每次计算面积,保留最大值即为所求

class Solution {
public:
    int maxArea(vector<int>& height) {
        int res = 0;//存储面积值
        for(int i = 0, j = height.size()-1; i<j; ){//两个指针从两边往中间走
            res = max(res, min(height[i], height[j])*(j-i));//计算面积并更新
            if(height[i] > height[j])
                j--;// 如果左指针指向的高度大于右指针指向的高度,移动右指针向左
            else i++;// 否则,移动左指针向右
        }
        return res;
    }
};