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;
        }
    };
    
  • 相关阅读:
    Handlerbars基础笔记
    each()和eq()
    可编辑表格(Editable Table)
    垂直居中vertical-align
    CSS属性的私有前缀
    CSS进阶知识
    CSS预处理器们
    CSS3之伪元素选择器和伪类选择器
    CSS基础复习
    Plan
  • 原文地址:https://www.cnblogs.com/libaoquan/p/7325473.html
Copyright © 2011-2022 走看看