11. Container With Most Waterleetcode,java算法,数组,求最大水池注水量

Posted 皓浩浩皓

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了11. Container With Most Waterleetcode,java算法,数组,求最大水池注水量相关的知识,希望对你有一定的参考价值。

11. Container With Most Water

Given n non-negative integers a1a2, ..., an, where each represents a point at coordinate (iai). n vertical lines are drawn such that the two endpoints of line i is at (iai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.

Note: You may not slant the container and n is at least 2.

给定一个长度>2的数组a[n],其中有n个点为(i,a[i]),求寻找两个点与x轴的连线组成的区域能装水最多

解题分析:

1.注水最多并不是面积最大,而是最短板决定面积的大小

2.找到两个最短板最大而且两个之间间距最大的就是最大面积

方法一:

常规思路,采取两个for循环,遍历所有面积,取最大值这样的话你的n过大时时间空间复杂度

  • Time complexity : O(n^2)O(n?2??). Calculating area for all \frac{n(n-1)}{2}?2??n(n?1)?? height pairs.
  • Space complexity : O(1)O(1). Constant extra space is used.

方法二:

左右两个标记进行循环,一旦当前木板为短板,则向另一侧移动下标寻找更短的板子

public class Solution {
    public int maxArea(int[] height) {
        int l=0,r=height.length-1,max=0;
        while(l<r){
            max=Math.max(max,Math.min(height[l],height[r])*(r-l));
            if(height[l]>height[r]){
                r--;
            }
            else
                l++;
        }
        return max;
    }
}
  • Time complexity : O(n)O(n). Single pass.

  • Space complexity : O(1)O(1). Constant space is used.

以上是关于11. Container With Most Waterleetcode,java算法,数组,求最大水池注水量的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode11-Container With Most Water

leetcode 11. Container With Most Water

11. Container With Most Water

11. Container With Most Water

LeetCode11. Container With Most Water 解题报告

11. Container With Most Water