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 };
  • 相关阅读:
    栈与递归
    细说二叉树的删除操作
    二叉树
    链表队列
    数组队列
    链表栈
    c语言实现数组栈
    c语言实现双链表
    HDU 4557 非诚勿扰(Treap找后继)
    POJ 3481 Double Queue(Treap模板题)
  • 原文地址:https://www.cnblogs.com/double-win/p/3774781.html
Copyright © 2011-2022 走看看