zoukankan      html  css  js  c++  java
  • lintcode-383-装最多水的容器

    383-装最多水的容器

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

    注意事项

    容器不可倾斜。

    样例

    给出[1,3,2], 最大的储水面积是2.

    标签

    两根指针 数组

    思路

    从左右两边向中间逼近,若要使面积增大,则必须找到更大的容器高度(因为容器长度在变短),所以保留长的那条线段,使得短线段向另一方逐渐逼近

    code

    class Solution {
    public:
        /*
         * @param : a vector of integers
         * @return: an integer
         */
        int maxArea(vector<int> heights) {
            // write your code here
            int size = heights.size();
            if (size <= 0) {
                return 0;
            }
    
            int result = 0, left = 0, right = size-1;
            while (left < right) {
                result = max(result, min(heights[left], heights[right])*(right - left));
                if (heights[left] < heights[right]) {
                    left++;
                }
                else {
                    right--;
                }
            }
            return result;
        }
    };
    
  • 相关阅读:
    hdu 1269 迷宫城堡(强联通分量,基础)
    hdu 2102 A计划(BFS,基础)
    python 变量命名规范
    rpm常用选项
    memcached
    session共享
    Nginx高级使用
    nginx 反向代理
    Nginx基本使用
    github 建立博客
  • 原文地址:https://www.cnblogs.com/libaoquan/p/7325473.html
Copyright © 2011-2022 走看看