双指针-盛最多水的容器

盛最多水的容器

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0)(i, height[i]) 。

找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

返回容器可以储存的最大水量。

说明:你不能倾斜容器。

输入:整型数组
输出:整型变量
思路:本题使用双指针,一个在左一个在右,值小的先移动

class Solution {
    public int maxArea(int[] height) {
        //定义变量存储最大值
        int maxValue = 0;
        //定义左右双指针分别位于数组的最左边和最右边
        int l = 0;
        int r = height.length - 1;
        //双指针进入循环
        while(l < r){
            //定义临时值
            int tmp = (r - l) * Math.min(height[l],height[r]);
            //更新最大值
            maxValue = Math.max(tmp,maxValue);
            //双指针移动
            //移动小的那个
            if(height[l] <= height[r]){
                l++;
            }else{
                r--;
            }
        }
        return maxValue;
    }
}

你可能感兴趣的:(算法,java,数据结构,双指针)