leetcode11. 盛最多水的容器

class Solution {
    public int maxArea(int[] height) {
        /*
            方法,由于面积是长*宽的原因,而长的最大值是一开始便知道的(数组的长度-1);
            因此可设置两个指针p,q;p指针初始指向数组头部,q指针初始指向数组尾部;
            并计算此时的面积;之后比较p指针处和q指针处数组的值,若p指针处的值小则将p指针后移
            反之若q指针处的值小则将q指针前移;反复这样处理知道p指针与q指针指向数组的同一个位置处时结束
            此时就可以得到最大面积
         */

         //1.定义两个指针p,q
        int p = 0,q = height.length-1;
        int maxVolumn = 0;
         
         while(p < q){
             //2.比较p和q处数组的值并判断要移动哪个指针
             int minHeight,currentVolumn;
             int width = q - p;
             if(height[p] < height[q])
                 minHeight = height[p++];
            else
                minHeight = height[q--];
            currentVolumn = minHeight * width;
            //3.判断是否需要更新maxVolumn
            if(currentVolumn > maxVolumn)
                maxVolumn = currentVolumn;
         }

         return maxVolumn;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值