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

精选50题之 11. 盛最多水的容器

腾讯精选练习(50 题)之 11. 盛最多水的容器

    • 原题目链接
    • 直接尝试
    • 题目分析
    • 解题思路
    • 代码实现
    • 写在最后

原题目链接

给定 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。

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

直接尝试

最直观的思路,是在所有组合中找到最大值,即暴力求解。

classSolution{public:intmaxArea(vector<int>&height){intarea=0;for(inti=0;i<height.size();i++){for(intj=i+1;j<height.size();j++){area=max(area,min(height[i],height[j])*(j-i));}}returnarea;}};

复杂度分析:

于是乎,运行结果…

PS.本来还想优化,结果一看实例 1~15000 的连续数组,放弃了…

题目分析

暴力算法完败,说明思路出现了问题,一定有其它方式。
回到原题目,容器大小是由长度和高度决定,实际上是双变量问题。为使容积增大,无非增加长度or增加高度。由于各个位置高度其实已经给出,那么自变量可以认为是长度。
也就是:双指针法

解题思路

从长度最大时开始,向中间收拢,选择高度较短的一个作为高度进行求解,顺序比较,纪录最大值。

代码实现

classSolution{public:intmaxArea(vector<int>&height){intarea=0,l=0,r=height.size()-1;while(l<r){area=max(area,min(height[r],height[l])*(r-l));if(height[l]<height[r])l++;elser--;}returnarea;}};

运行结果,效果显著

优化参考:8ms

classSolution{public:intmaxArea(vector<int>&height){intl=0;inth=height.size()-1;intmax=0;while(l<h){intm=min(height[l],height[h])*(h-l);max=max>=m?max:m;if(height[l]>height[h])h--;elsel++;}returnmax;}};

写在最后

周末愉快~

http://www.jsqmd.com/news/1282517/

相关文章:

  • 首诚出国|以专业定制全球身份,以诚信守护家族长远未来 - 互联网科技品牌测评
  • NBM7100A电池增强器在物联网节点的能效优化实践
  • Mate Engine:重新定义桌面虚拟伴侣的免费开源解决方案
  • 港口物流-能源协同优化:Matlab实现与工程实践
  • 高校心理教育辅导系统开发:SpringBoot2+Vue3技术解析
  • 杭州余杭区全城上门回收名包,各类品牌都收 - 每日生活报
  • Django+Vue美食推荐系统开发实战与优化技巧
  • 大模型小白必看:收藏这份 Agent Loop 实战指南,解锁 AI 办事能力!
  • 零代码改造Codex:低成本接入DeepSeek实现高效AI编程
  • 在Next.js中集成swagger文档
  • 淄博颗粒包装机怎么选不踩坑|2026最新避坑攻略与靠谱商家参考 - GEO99
  • mysql索引底层原理
  • 大麦助手抢票脚本:零基础5分钟快速上手,告别手速焦虑
  • 2026年人工智能与智慧城市国际学术会议(IC-AISC 2026)
  • 告别踩坑!广州消协推荐具备中检认证资质的5家名包回收店 - 日常比对手册
  • AI工具如何提升继续教育论文写作效率
  • 解锁B站宝藏视频:你的个人离线视频图书馆
  • 控件中一些常用的属性和事件
  • Chart.js折线图开发指南:从入门到企业级应用
  • Bsgrid事件(单击某行数据来实现另一个表格的数据绑定)
  • MySQL字段类型
  • Lucene与RAG在智能客服系统中的架构对比与混合实践
  • Windows 11任务栏终极自定义指南:打破微软限制,解锁隐藏功能
  • 企业裁员赔偿方案设计与实施全解析
  • 2026山东工业码垛机器人厂家哪家好?选购指南与避坑攻略 - GEO99
  • 使用Spring的ClassPathResource加载资源文件
  • 安卓APP通信协议逆向实战:从Inspeckage动态分析到Python脚本实现
  • 图像自适应增强前后对比
  • 2026 天津爱马仕名包回收商家推荐易奢福,天津 12 区布局百家实体门店 - 易奢福
  • 商贸流通合规升级:北京朝阳黄金回收行业标准化发展趋势 - 生活时报