LeetCode11 Container With Most Water(两点法)

题意

给定n个非负整数a1,a2,…,an,其中每个代表坐标(i,ai)处的一个点。
绘制n条垂直线,线i的两个端点处于(i,ai)和(i,0)处。
找到两条线,它们与x轴一起形成一个容器,使得容器包含最多的水

不允许倾斜,n至少为2

题解

暴力 O(n2) TLE

简单方法 O(n):
简单看来就是一个面积问题,长降低了,宽就得提高,这样才有可能面积更大

用两个指针分别指向数组的第一个和最后一个数,一步一步向中间汇集,小数的指针向中间走一步,直至两指针汇集循环结束。

代码
class Solution {
public:
    int maxArea(vector<int>& height) {
        int result = 0;
        int Area;
        int i = 0 ,j=height.size()-1;
        while(i<j){
            if(height[i]<height[j]){
                Area = height[i]*(j-i);
                i++;
            }else{
                Area = height[j]*(j-i);   
                j--;
            }
            if(result<Area) result = Area;

        }
        return result;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值