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 指针。这样可以尝试更大的水量,因为较短的线影响水量的大小,移动较短的线可能会找到更大的容器。
  • 最终返回最大水量。
相关推荐
Jerry10 分钟前
LeetCode 19. 删除链表的倒数第 N 个结点
算法
金銀銅鐵16 分钟前
费马小定理
python·数学·算法
技术不好的崎鸣同学1 小时前
[ACTF2020 新生赛]Exec 思路及解法
算法·安全·web安全
Full Stack Developme3 小时前
Java LRU 与 LFU 算法及应用
java·开发语言·算法
Jerry4 小时前
LeetCode 707. 设计链表
算法
疋瓞4 小时前
python和C++对比(1)_数据类型和数据结构
数据结构·c++·python
C语言小火车4 小时前
C++ 堆排序深度精讲:基于完全二叉树的选择排序进化,最坏情况 O(n log n) 的稳定王者
开发语言·c++·算法·排序算法·堆排序
kebidaixu5 小时前
两轮BMS AFE SH367306 I2C 读写时序
算法
智能排队系统_头部供应商5 小时前
RK3588边缘网关改造银行排队系统实战
算法