欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > LeetCode 力扣 热题 100道(十六)盛最多水的容器(C++)

LeetCode 力扣 热题 100道(十六)盛最多水的容器(C++)

2025/9/26 2:34:19 来源:https://blog.csdn.net/weixin_64593595/article/details/144330537  浏览:    关键词:LeetCode 力扣 热题 100道(十六)盛最多水的容器(C++)

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。

找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

返回容器可以储存的最大水量。

说明:你不能倾斜容器。

如下为代码:

class Solution {
public:int maxArea(vector<int>& height) {int left = 0, right = height.size() - 1;int max_area = 0;while (left < right) {// 计算当前容器的水量int current_area = min(height[left], height[right]) * (right - left);// 更新最大水量max_area = max(max_area, current_area);// 移动指针if (height[left] < height[right]) {left++;} else {right--;}}return max_area;}
};
  • 初始化两个指针,left 指向数组的开头,right 指向数组的末尾。
  • 每次计算当前指针所指的两条线所能容纳的水量,并更新最大水量。
  • 根据容器的高度,移动指针:如果 height[left] 小于 height[right],则移动 left 指针,否则移动 right 指针。这样可以尝试更大的水量,因为较短的线影响水量的大小,移动较短的线可能会找到更大的容器。
  • 最终返回最大水量。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词