当前位置: 首页 > news >正文

hot 100(5) —— 盛最多水的容器(双指针)

一、设置left和right双指针遍历(最多面积由较小高度决定)+ 贪心思想

class Solution {public int maxArea(int[] height) {if(height == null || height.length == 0){return 0;}int left = 0;int right = height.length - 1;int maxArea = 0;while(left < right){int minHeight = Math.min(height[left],height[right]);int area = minHeight * (right - left);maxArea = Math.max(maxArea,area);while(left < right && height[left] <= minHeight){left++;}while(left < right && height[right] <= minHeight){right--;}}return maxArea;}
}

代码功能解释

该代码用于求解盛最多水的容器问题:给定一个整数数组 height,其中每个元素代表坐标系中垂直于x轴的线段高度,找出两条线段与x轴组成的容器能容纳的最大水量。

核心逻辑基于“双指针法”,利用“贪心思想”优化:

1. 初始化指针:左指针 left 指向数组起始(0),右指针 right 指向数组末尾(height.length - 1),maxArea 记录最大水量(初始为0)。

2. 计算当前水量:容器水量由“短板高度”和“两板距离”决定,即 min(height[left], height[right]) * (right - left),并更新 maxArea。

3. 移动短板指针:为了寻找更大水量,需移动较短的线段指针(若移动长板,两板距离减小且短板不变,水量必然减少),直到左右指针相遇。

时间复杂度

• O(n),其中 n 是数组 height 的长度。

• 左右指针从数组两端向中间移动,每个元素最多被访问1次,仅需1轮遍历即可完成计算,无嵌套循环。

空间复杂度

• O(1),即常数级空间。

• 仅使用 left、right、maxArea、minHeight 4个额外变量,空间消耗不随数组长度变化,属于原地算法。

 

http://www.dtcms.com/a/525067.html

相关文章:

  • 手机端网站seo国内专门做酒的网站
  • 平面ui设计网站代理网址网站
  • 2025年10月24日 今日AI大事件
  • Linux网络诊断利器:ss命令详解
  • 北京网站建设公司 蓝纤科技 网络服务网站一般多长
  • 注册qq空间网站wordpress 屏蔽评论
  • 有哪些网站可以做笔译中国建设机械职业教育网证书查询
  • 轨道平面系与轨道姿态系
  • 前端十年回顾及未来展望
  • JavaScript 中,数组去重
  • JavaScript深入之函数组合详解
  • Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
  • Edge-TTS+Cloudflare Worker:免费 TTS 服务搭建指南,支持 API 调用与低代码集成
  • 企业建网站平台找人做购物网站
  • 【javaFX基础】 “Not on FX application thread; currentThread = Thread-3“问题解决方法
  • 专业的网站开发服务window2008 网站建设
  • Linux 查找文件
  • 法术施放选择目标逻辑概述
  • 后台管理网站开发找客户在公司做网站
  • 做游戏陪玩网站江苏省建设厅的官方网站
  • 青岛科技大学《Nano Res.》:0.5秒合成双单原子催化剂!锌空电池稳定运行650小时,氯碱电解效率达97%
  • 力扣 11. 盛最多水的容器 - Java版
  • 狗和人做网站旅游网站框架
  • 网站搭建公司排行榜网站要求
  • n8n网页抓取自动化完整指南
  • Alpine Linux:轻量、安全与高效的Linux发行版
  • 第四章、路由配置
  • Node.js:JavaScript的服务器端革命
  • C++动态内存管理详解:new/delete与malloc/free深度对比
  • 危险网站提示门户网站是如何做引流的