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

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

题目:盛最多水的容器

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

找出其中的两条线,使得它们与 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)

相关推荐
一條狗1 小时前
学习日报 20260423|Vue SPA 部署到 Spring Boot:404/500 错误排查与解决方案1
vue.js·spring boot·学习
Ailan_Anjuxi1 小时前
手写数字识别零基础实战:基于PyTorch的CNN完整拆解
算法·图像识别
jiucaixiuyang1 小时前
散户如何使用手机T0算法?
算法·量化·t0
寒秋花开曾相惜2 小时前
(学习笔记)4.1 Y86-64指令集体系结构(4.1.6 一些Y86-64指令 )
linux·运维·服务器·开发语言·笔记·学习·安全
阿Y加油吧2 小时前
算法二刷复盘:LeetCode 79 单词搜索 & 131 分割回文串(Java 回溯精讲)
java·算法·leetcode
徐新帅2 小时前
4164:【GESP2512七级】学习⼩组
算法
北顾笙9802 小时前
day30-数据结构力扣
数据结构·算法·leetcode
爱写代码的倒霉蛋2 小时前
天梯赛经验总结(细节篇)
经验分享·算法
蓝桉~MLGT2 小时前
Ai-Agent学习历程—— Harness和Memory介绍和应用 & vibe Coding工具选择
人工智能·学习