Lintcode383 Container With Most Water solution 题解

【题目描述】

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

Notice:You may not slant the container.

给定n个非负整数 a1, a2, ..., an, 每个数代表了坐标中的一个点(i, ai)。画n条垂直线,使得i垂直线的两个端点分别为(i, ai)和(i, 0)。找到两条线,使得其与x轴共同构成一个容器,以容纳最多水。

【注】容器不可倾斜。

【题目链接】

www.lintcode.com/en/problem/container-with-most-water/

【题目解析】

木桶原理大家肯定都知道,水盛多少取决于最短的杯壁,所以此题还可以引申为往围成的区域内放矩形,怎样使得矩形面积最大。题目中的不能倾斜(slant:倾斜,倾倒)对应为矩形必须水平放置。

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

【参考答案】

www.jiuzhang.com/solutions/container-with-most-water/

你可能感兴趣的:(Lintcode383 Container With Most Water solution 题解)