【每天学习一点算法 2026/04/23】盛最多水的容器

每天学习一点算法 2026/04/23

题目:盛最多水的容器

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

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

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

说明:你不能倾斜容器。

要想容纳最多的水,就要宽度足够的同时保证两侧的线足够长。

我们可以利用双指针来解这道题,首先两个指针指向 height 数组两端计算容量,如果要使容量变大只能移动较小的那一个指针,然后再次计算容量跟之前的容量作比较取较大值,这样一直移动到两个指针相遇这样就能得出最大容量。

typescript 复制代码
function maxArea(height: number[]): number {
  let left = 0, right = height.length - 1 // 初始化左右指针
  let res = 0 // 结果
  // 循环计算容量
  while (left < right) {
    const min = Math.min(height[left], height[right]) // 获取最短线
    const current = (right - left) * min // 计算当前容量
    res = Math.max(res, current) // 保存较大容量值
	// 比较并移动指针
    if (height[left] > height[right]) {
      right--
    } else {
      left++
    }
  }
  return res
};

题目来源:力扣(LeetCode)

相关推荐
没有钱的钱仔29 分钟前
协方差矩阵含义
算法·机器学习·矩阵
垆边人似月.31 分钟前
华为机试题 :和为 K 的子数组个数
算法·leetcode·华为
三*一43 分钟前
优化修整算法
前端·javascript·算法
达子6661 小时前
RUST 图解 第 3 章:通用编程概念(Common Programming Concepts)
开发语言·算法·rust
夏幻灵1 小时前
每日一题:LeetCode 165:比较版本号
算法·leetcode·职场和发展
道尔柯南1 小时前
C++ 面向对象编程入门:类和对象(上)
开发语言·c++·算法
gjf05_052 小时前
人该怎样活着呢?版本75.8
学习
Navigator_Z2 小时前
LeetCode //C - 1288. Remove Covered Intervals
c语言·算法·leetcode
码爸2 小时前
决策树介绍与示例
python·算法·机器学习
动词ing2 小时前
【题目练习】字符串相乘
算法