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

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

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

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

**说明:**你不能倾斜容器。

如下为代码:

cpp 复制代码
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 指针。这样可以尝试更大的水量,因为较短的线影响水量的大小,移动较短的线可能会找到更大的容器。
  • 最终返回最大水量。
相关推荐
希望_睿智几秒前
实战设计模式之访问者模式
c++·设计模式·架构
Mr_WangAndy几秒前
C++数据结构与算法_线性表_链表
c++·环形链表·合并链表·链表刷题·链表刷题总结
adore.9682 分钟前
2.24 oj95 96 97
开发语言·c++·算法
白中白121384 分钟前
算法题-16
算法
梦帮科技6 分钟前
【DREAMVFIA开源】量子互联网协议:节点通信与路由算法
人工智能·神经网络·算法·生成对抗网络·开源·量子计算
cui_ruicheng9 分钟前
C++ 多态详解(上):概念与语言机制
开发语言·c++
fpcc10 分钟前
并行编程实战——CUDA编程的其它Warp函数
c++·cuda
菜鸡儿齐11 分钟前
leetcode-搜索插入位置
数据结构·算法·leetcode
52Hz11812 分钟前
力扣394.字符串解码、739.每日温度、84.柱状图中最大的矩形
python·算法·leetcode
hope_wisdom13 分钟前
C/C++数据结构之用链表实现队列
c语言·数据结构·c++·链表·队列