题目

题解

暴力解

int maxArea(vector<int>& height) {
	int n = height.size();
	int max = 0;
	for (int i = 0; i < n; i++) {
		for (int j = i + 1; j < n; j++) {
			int  area = std::min(height[i], height[j]) * (j - i);
			max = std::max(area, max);
		}
	}
	return max;
}

双指针

class Solution {
public:
    int maxArea(vector<int>& height) {
        int max = 0;
        int l = 0,r = height.size()-1;//两个指针
        while(l < r){
            int area = std::min(height[l],height[r]) * (r-l);
            max = std::max(max,area);

            //短的向长的移动
            if(height[l] < height[r]) l++;
            else r--;
        }
        return max;
    }
};

更多推荐