zoukankan      html  css  js  c++  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.

    【analyze】

    1.穷举的方法时间复杂度为O(n)

    2.若从两边逼近并记录最大值,令left=0,right=length-1;若height[left]>height[right],则right--;反之,则left++。

     为什么能这么做呢?需要用到反证思想,假设i-j取到最大值,则i之前都要小于height[i]

    3.还可改进下,不用每次都减一

    【算法】

    v1:
    public class Solution {
        public int maxArea(int[] height) {
            int res=0;
            int l=0;
            int r=height.length-1;
            while(l<r) {
                int w=r-l;
                int h=Math.min(height[l],height[r]);
                res=Math.max(res,w*h);
                if(height[l]<height[r])
                    l++;
                else 
                    r--;
            }
            return res;
        }
    }
    
    v2:
    public class Solution {
        public int maxArea(int[] height) {
            int res=0;
            int l=0;
            int r=height.length-1;
            while(l<r) {
                int w=r-l;
                int h=Math.min(height[l],height[r]);
                res=Math.max(res,w*h);
                if(height[l]<height[r]) {
                    int temp=l;
                    while(temp<r&&height[temp]<=height[l])
                        temp++;
                    l=temp;
                }
                else {
                    int temp=r;
                    while(temp>l&&height[temp]<=height[r])
                        temp--;
                    r=temp;
                }
            }
            return res;
        }
    }
  • 相关阅读:
    叉积
    Linux IO模型
    uva10201-dp
    如何在Java内使用Protobuf
    uva10651-记忆化搜索
    ZK的几个常用方式
    uva10304-最优二叉搜索树
    uva590-DP-Always on the run
    Git神操作
    在容器内运行JVM时内存的问题
  • 原文地址:https://www.cnblogs.com/hwu2014/p/4479460.html
Copyright © 2011-2022 走看看