LeetCode Hot 100 --- 盛最多水的容器 (java)

Posted 小样5411

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Hot 100 --- 盛最多水的容器 (java)相关的知识,希望对你有一定的参考价值。

题目


有一道相似题,可以看看,相似扩展:接雨水问题

解析与代码

这道题最容易想到的是暴力破解,两个遍历,但是这复杂度太高,当数组元素非常多时,运行时间就太长,所以根据接雨水问题的启发,可以用双指针法

for(int i = 0 ; i < len - 1 ; i++){
	for(int j = i + 1 ; j < len ; j++){
		//write code
	}
}

双指针法

class Solution {
    public int maxArea(int[] height) {
        int left = 0;//left、right指针
        int right = height.length - 1;
        int max = 0;//最大容纳量
        //left>=right,即相遇,就跳出
        while(left < right){
            int area = Math.min(height[left],height[right]) * (right - left);
            max = Math.max(max,area);
            //若向内移动短板,水槽的短板可能变大,因此下个水槽的面积可能增大
            //若向内移动长板,那水槽面积一定减小
            if(height[left] <= height[right]){
                left++;
            }else{
                right--;
            }
        }
        return max;
    }
}

以上是关于LeetCode Hot 100 --- 盛最多水的容器 (java)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Hot100(11-15)

LeetCode11-盛最多水的容器

LeetCode-011-盛最多水的容器

LeetCode:盛最多水的容器11

LeetCode 11 盛最多水的容器

算法leetcode|11. 盛最多水的容器(rust重拳出击)