zoukankan      html  css  js  c++  java
  • 【LeetCode】【Python解读】Container with most water

    这个问题是芭芭拉在采访中遇到的,不幸的是,的复杂性O(n2)该,太失望了,难怪没有通过面试。

    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.

    题目说的有点复杂,大意是利用x轴作底,两个随意的竖直线段作杯壁,何时盛水最多。

    木桶原理大家肯定都知道,水盛多少取决于最短的杯壁,所以此题还能够引申为往围成的区域内放矩形。如何使得矩形面积最大。

    题目中的不能倾斜(slant:倾斜,倾倒)相应为矩形必须水平放置。

    复杂度为O(n)的思想是贪心原理,先从底边最大的情况考虑,计算最大面积后。此时要将底边长度减1,仅仅须要将杯壁较短的那一边移动一个单位距离,得到的解必然优于杯壁较长那边移动的情况。这样保证每次移动都得到的是局部最优解。

    class Solution {
    public:
        int maxArea(vector<int> &height) {
            int Len = height.size(),low=0,high=Len-1;
            int maxV = 0;
            while(low<high){
                maxV = max(maxV,(high-low)*min(height[low],height[high]));
                if (height[low]<height[high]) low++;
                else high--;
            }
            return maxV;
        }
    };


    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    Kali安装输入法
    各类16进制文件头
    KALI搭建DVWA
    [LeetCode]子串的最大出现次数(字符串)
    [LeetCode]415. 字符串相加、43. 字符串相乘
    [LeetCode]1249. 移除无效的括号(字符串,栈)
    [Leetcode]585. 2016年的投资(MySQL)
    [LeetCode]678. 有效的括号字符串、20. 有效的括号(栈)
    [LeetCode]1071. 字符串的最大公因子(gcd)
    [LeetCode]Sql系列4
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4650720.html
Copyright © 2011-2022 走看看