力扣(十一)盛最多水的容器(双指针)

题目描述
在这里插入图片描述
解题
思路:实质则求矩形面积,长为两线i的差值,宽为两线较短线的长(装水:木桶效应)。

public class Solution {
    public int MaxArea(int[] height) {
            int s = 0;
            for (int i = 0; i < height.Length ; i++)
            {
                for (int j = i+1 ; j < height.Length ; j++)
                {
                    s = Math.Max(Math.Min(height[l],height[r])*(r - l),s);
                }
            }
            return s;
    }
}

双for循环,所有可能都试一次,比较得出最大的面积。
官方解题

public int MaxArea(int[] height) {
            int s = 0;
            int l = 0;
            int r = height.Length-1;
            while (r > l)
            {
                s = Math.Max(Math.Min(height[l],height[r])*(r - l),s);
                if (height[r] > height[l])
                {
                    l++;
                }
                else
                {
                    r--;
                }
            }
            return s;
    }

知识点:双指针
①由两边向内移动;
②每次移动一边,移动较小的边(木桶效应,增加短板高度);
③双指针效率为双for循环效率十倍以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值