在做题中学习(39):盛最多水的容器
2023-12-24 06:50:07
解释:因为木桶原理,能否盛最多的水是由最短的一块板决定的,所以容纳水的公式为:v= 两个数下标之差 * 短板高度。
思路:最优解法(双指针法)
从这张图可以看出:4和6组完后便不必再和2,5组了,因为向内组合只有两种可能,w在减小,要么不变要么减小。所以就可以把4干掉,留下的6再和剩下的数组合,此时虽然w一定减小,但短板可能会经过更新而增大。
所以可以看出每组一次数,就可以舍去一个数,直到left和right相遇,总共有right-left次计算出的体积,在这些体积中选最大值就是最后的结果。
class Solution
{
public:
int maxArea(vector<int>& height)
{
int left = 0, right = height.size()-1;
int max=0;
while(left!=right)
{
if(height[left]<height[right])
{
int v = height[left]*(right-left);
if(v > max)
{
max = v;
}
left++;
}
else
{
int v = height[right]*(right-left);
if(v>max)
{
max = v;
}
right--;
}
}
return max;
}
};
文章来源:https://blog.csdn.net/yiren_liusong/article/details/135166923
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!