zoukankan      html  css  js  c++  java
  • [LeetCode 题解]: 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.

    贪心策略:两端设置围栏,无论如何注水,水只要不超过其中较短的那一根围栏即可,中间的柱子可以忽略。

    相继缩短距离,较短一端的柱子换成向里的一根。

    例如: height[left] <= height[right] :  left = left+1;

            反之, right = right-1;

     1 class Solution {
     2 public:
     3     int maxArea(vector<int> &height) {
     4         int ans=0,left=0,right=height.size()-1,contain;
     5         while(left<right)
     6         {
     7             contain = (right-left)*min(height[right],height[left]);
     8             ans = max(contain, ans);
     9             height[left]<=height[right]?left++:right--;
    10         }
    11         return ans;        
    12     }
    13 };
  • 相关阅读:
    X的平方根(二分)
    JavaScript(1)
    入门训练 Fibonacci数列 (水题)
    set集合容器
    deque双端队列容器
    回归分析
    cf1121d 尺取
    CF1121C 模拟
    poj3662 二分+最短路
    最短路小结
  • 原文地址:https://www.cnblogs.com/double-win/p/3774781.html
Copyright © 2011-2022 走看看