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 指针。这样可以尝试更大的水量,因为较短的线影响水量的大小,移动较短的线可能会找到更大的容器。
  • 最终返回最大水量。
相关推荐
qeen8712 小时前
【算法笔记】二分查找与二分答案
c语言·c++·笔记·学习·算法·二分
C雨后彩虹12 小时前
投篮大赛问题
java·数据结构·算法·华为·面试
Sylvia-girl13 小时前
类与对象(下)
c++·友元函数·类与对象
Hello eveybody13 小时前
介绍最大公因数和最小公约数(C++)
java·开发语言·c++
橘白31613 小时前
GVHMR
人工智能·算法·机器人·机器人数据·视频动捕
宵时待雨13 小时前
优选算法专题3:二分查找
数据结构·c++·算法·leetcode·职场和发展
Byte不洛13 小时前
理解C++异常机制:栈展开、异常传播与异常安全
c++·异常处理·后端开发·编程基础·try catch
代码飞一会儿13 小时前
算法与数据结构之树——让数据查找更加迅速
算法
工业甲酰苯胺13 小时前
2026 产业 AI 爆发:JNPF 助企业少走 3 年弯路
人工智能·算法·低代码
贾斯汀玛尔斯13 小时前
每天学一个算法--最短路径问题与三类基本算法
算法