98 双指针求盛最多水的容器

发布时间:2024年01月04日

问题描述:给你n个非负整数a1,a2,...,an,没个数代表坐标中的一个点(i,ai).在其中找出两条线,使得他们与x轴共同构成的容器可以容纳最多的水。

暴力求解:这题最简单地方法就是暴力求解,遍历整个二维表格,选出最大的那个。

public int maxWater(int []nums)
{
int maxNumber=Integer.MIN_VALUE;
for(int i=0;i<nums.length-1;i++)
{
for(int j=i+1;j<nums.length;j++)
{
maxNumber=Math.max(maxNumber,(nums[j]-nums[i])*(j-i));
}
}
return maxNumber;
}

双指针求解:先固定左侧,作为桶的一边,然后从右侧开始寻找,直到找到大于等于左侧的值表示右侧桶,则表示以左侧该值为桶的一边所得到的最大容量,且为了防止错过某些情况,还需要从右往左找。

public int maxWater(int []nums)
{
int maxNumber=Integer.MIN_VALUE;
for(int i=0;i<nums.length;i++)
{
for(int j=nums.length-1;j>i;j--)
{
if(nums[j]>=nums[i]){maxNumber=Math.max((j-i)*(nums[i]));break;}
}
}
}


for(int i=nums.length-1;i>=0;i--)
{
for(j=0;j<i;j++)
{
if(nums[j]>=nums[i]){maxNumber=Math.max((i-j)*(nums[i]));break;}
}

???????return maxNumber;
}

文章来源:https://blog.csdn.net/qq_52299902/article/details/135390342
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。