Leetcode11.盛水最多的容器

问题描述:

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

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

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

说明:你不能倾斜容器。


 

题解思路:

容器的面积公式:S=min(height[left],height[right])*(right-left)

很容易想到的就是暴力求解的办法,首先对数组进行两次遍历计算得到最大值并返回。

 

 

 

 

另一种思路就是双指针思想,首先设立左右两个指针,一个指针指向开头,一个指向结尾。此时的容器底最大,接下来要做相应的调整,调整的方向就是左右两个指针所指向的元素,哪个元素的值最小,则该指针向内侧移动一个单位。这样能保证在容器底部减小的时候,为了使得容器所盛面积最大,放弃原容器中较小的一条边,保留较长的一条边,以此获取更高边的机会。

 

posted @   USTC_Freeman  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示