盛最多水的容器

分析

这道题如果有双指针的思想难度不大。 我们只需要设立左右指针, 让他们从两端往中间扫描每个元素, 并确保面积始终为最大值即可。

解答

class Solution {
public:
  int maxArea(vector<int> &height) {

    int num = height.size();
    auto left = 0, right = num - 1, ans = 0;

    while (left < right) {
      auto min_height = min(height[left], height[right]);
      ans = max((right - left) * min_height, ans);

      if (height[left] >= height[right])
        right--;
      else
        left++;
    }

    return ans;
  }
};
返回文章列表