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 指针。这样可以尝试更大的水量,因为较短的线影响水量的大小,移动较短的线可能会找到更大的容器。
  • 最终返回最大水量。
相关推荐
q_30238195564 分钟前
破局路侧感知困境:毫米波雷达+相机融合算法如何重塑智能交通
数码相机·算法
Robert--cao5 分钟前
人机交互(如 VR 手柄追踪、光标移动、手势识别)的滤波算法
人工智能·算法·人机交互·vr·滤波器
枫叶丹47 分钟前
【Qt开发】Qt窗口(十) -> QInputDialog 输入对话框
c语言·开发语言·数据库·c++·qt
云青山水林7 分钟前
算法竞赛从入门到跳楼(ACM-XCPC、蓝桥杯软件赛等)
c++·算法·蓝桥杯
zore_c8 分钟前
【C语言】EasyX图形库——实现游戏音效(详解)(要游戏音效的看过来!!!)
c语言·开发语言·经验分享·笔记·游戏
汪宁宇9 分钟前
MFC中从位图角度旋转图片示例代码
c++·mfc·图片·旋转
LYFlied10 分钟前
【每日算法】LeetCode138. 随机链表的复制
数据结构·算法·leetcode·链表
zore_c12 分钟前
【C语言手撕算法】LeetCode-142. 环形链表 II(C语言)
c语言·数据结构·算法·leetcode·链表·推荐算法
兵哥工控14 分钟前
mfc最简单自定义消息投递实例
c++·mfc·postmessage
hnjzsyjyj6 小时前
东方博宜OJ 2190:树的重心 ← 邻接表 or 链式前向星
数据结构·链式前向星·树的重心