zoukankan      html  css  js  c++  java
  • 11. Container With Most Water【leetcode】,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(n2​​). Calculating area for all frac{n(n-1)}{2}2n(n1)​​ 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.

    不积跬步无以至千里,千里之堤毁于蚁穴。 你是点滴积累成就你,你的丝丝懒惰毁掉你。 与诸君共勉
  • 相关阅读:
    python自学第13天 hashlib,re模块
    python自学第12天 模块
    python自学第12天 模块定义,导入,内置模块
    python自学第11天-单线程并发、迭代器,序列化,获取路径
    python自学第10天,生成器
    python自学第9天,装饰器
    python自学第8天,变量,递归
    python自学第7天,函数,参数
    彻底搞懂Session与Cookie的异同!
    你真的搞懂了Java中的<<、>>、>>>运算符嘛?
  • 原文地址:https://www.cnblogs.com/haoHaoStudyShare/p/7359964.html
Copyright © 2011-2022 走看看