zoukankan      html  css  js  c++  java
  • leetcode: Container With Most Water

    http://oj.leetcode.com/problems/container-with-most-water/

    Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i 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.
    
    Note: You may not slant the container.

    思路

    基于木桶原理,容积是由短板决定。从左右两头往当中走,容积等于(right - left) * min(height[left], height[right])。如果左边高度较低的话,右边再往前移是不可能获得更大的容积,只有左边往后移直到height[left]能取得更大的值。

     1 class Solution {
     2 public:
     3     int maxArea(vector<int> &height) {
     4         int width = height.size(), left = 0, right = width - 1;
     5         int max = 0;
     6         
     7         while (left < right) {
     8             int vol = min(height[left], height[right]) * (right - left);
     9             
    10             if (vol > max) {
    11                 max = vol;
    12             }
    13             
    14             int next;
    15             if (height[left] > height[right]) {
    16                 next = right - 1;
    17                 while ((next > left) && (height[next] <= height[right])) {
    18                     --next;
    19                 }
    20                 right = next;
    21             }
    22             else {
    23                 next = left + 1;
    24                 while ((next < right) && (height[next] <= height[left])) {
    25                     ++next;
    26                 }
    27                 left = next;
    28             }
    29         }
    30         
    31         return max;
    32     }
    33 };
  • 相关阅读:
    微信公众号--JS-SDK
    微信公众号--网页授权
    微信公众号--资源请求
    微信公众号--相关资料
    微信公众号--消息回复
    一.小程序 --申请
    2017年总结
    SSM框架中常用的配置文件
    UML的9种图例解析
    23种设计模式汇总整理
  • 原文地址:https://www.cnblogs.com/panda_lin/p/container_with_most_water.html
Copyright © 2011-2022 走看看