每天一道算法题

LeetCode第11题:盛最多水的容器

这道题看似复杂,其实很简单,首先相同高度肯定是距离越远容量越大,所以可以直接两个指针分表从两端开始计算容量,然后将高度低的一端指针向内移动,移动到两个指针相差为一,获取其中最大值即可。这里关键点就是每次都移动高度低的一端的指针。

public static int maxArea(int[] height) {
        int ans = 0;
        int left = 0;
        int right = height.length - 1;
        while (left < right) {
            int area;
            // 这里每次移动高度低的一端的指针
            if (height[left] < height[right]) {
                area = height[left] * (right - left);
                left++;
            } else {
                area = height[right] * (right - left);
                right--;
            }
            ans = ans > area ? ans : area;
        }
        return ans;
    }

你可能感兴趣的:(每天一道算法题)