news 2026/6/10 21:42:15

LeetCode Hot 100 - 盛水最多的容器解题思路详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode Hot 100 - 盛水最多的容器解题思路详解

LeetCode Hot 100 - 盛水最多的容器解题思路详解

题目描述

给你 n 个非负整数 a1, a2, ..., an,每个数代表坐标中的一个点 (i, ai)。在坐标内画 n 条垂直线,第 i 条线的两个端点是 (i, ai) 和 (i, 0)。找出其中两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

说明:你不能倾斜容器,且 n ≥ 2。

示例

输入: [1,8,6,2,5,4,8,3,7] 输出: 49

解题思路

这是一个经典的双指针问题。我们使用两个指针lr分别指向数组的首尾,计算当前两个柱子所能形成的面积,并不断移动较短的一边,以期望找到更大的面积。

核心思想
  • 容器的面积由两个因素决定:

    • 两根柱子之间的距离(宽):(r - l)
    • 较矮柱子的高度(高):Math.min(nums[l], nums[r])

    所以面积为:

    area = Math.min(nums[l], nums[r]) * (r - l)
  • 为什么移动较短的柱子?

    因为面积受限于较矮的柱子。如果我们固定较矮的柱子而移动较高的柱子,宽度减小,高度不会增加(仍受制于较矮柱子),所以面积只会变小或不变。因此,只有移动较矮的柱子,才有可能在后续中找到更高的柱子,从而获得更大的面积。

Java代码实现

class Solution { public int maxArea(int[] nums) { int l = 0, r = nums.length - 1; int ans = 0; while (l < r) { int area = Math.min(nums[l], nums[r]) * (r - l); ans = Math.max(area, ans); if (nums[l] < nums[r]) { l++; } else { r--; } } return ans; } }

算法复杂度分析

  • 时间复杂度:O(n),每个元素最多被访问一次。
  • 空间复杂度:O(1),只使用了常数级别的额外空间。

总结

本题通过双指针技巧将暴力解法 O(n²) 优化到 O(n),关键在于理解“移动较短边才可能获得更大面积”这一贪心策略。这是 LeetCode Hot 100 中非常经典的一道题,建议熟练掌握其思想和代码实现。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 12:46:41

LeetCode Hot100 接雨水解题思路详解

LeetCode Hot100&#xff1a;接雨水解题思路详解 题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 例如&#xff0c;输入 height [0,1,0,2,1,0,1,3,2,1,2,1]&#xff0c;输出为 6。 解题思路 这…

作者头像 李华
网站建设 2026/6/10 14:58:05

Windows远程桌面多用户连接终极指南:RDP Wrapper完全解锁方案

Windows远程桌面多用户连接终极指南&#xff1a;RDP Wrapper完全解锁方案 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 还在为Windows系统仅支持单用户远程连接而烦恼&#xff1f;想要在不升级专业版的情况下实现…

作者头像 李华
网站建设 2026/6/9 21:33:33

魔盒项目开发纪实:ESP-IDF固件开发起步

魔盒固件开发①&#xff1a;准备日期&#xff1a;2025-12-15 目标&#xff1a;把官方 hello_world 工程改造成"魔盒"固件骨架&#xff0c;今天先完成环境验证与基础配置。一、开发环境一览项目版本 / 来源操作系统MAC OSVS Code1.107ESP-IDF 插件v1.10.2&#xff08;…

作者头像 李华
网站建设 2026/6/10 18:54:29

DOCX.js:纯前端JavaScript实现Word文档生成的神器

DOCX.js&#xff1a;纯前端JavaScript实现Word文档生成的神器 【免费下载链接】DOCX.js Generate Microsoft Word DOCX files in pure client-side JavaScript. Try in Chrome 项目地址: https://gitcode.com/gh_mirrors/do/DOCX.js DOCX.js是一个专为浏览器环境设计的开…

作者头像 李华
网站建设 2026/6/10 14:58:04

5大实战技巧!ColorUI选项卡组件助你打造高效移动端导航

5大实战技巧&#xff01;ColorUI选项卡组件助你打造高效移动端导航 【免费下载链接】coloruicss 鲜亮的高饱和色彩&#xff0c;专注视觉的小程序组件库 项目地址: https://gitcode.com/gh_mirrors/co/coloruicss ColorUI是一款专注于小程序开发的组件库&#xff0c;其选…

作者头像 李华