Container With Most Water --装最多水的容器(重)

来源:互联网 发布:湖南软件企业评估 编辑:程序博客网 时间:2024/05/31 06:23
问题:链接

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.

解答:

参考这里.

代码:

class Solution {public:    int maxArea(vector<int> &height) {        int lh,rh;        int i,j;        int temp,min;        int area = 0;        i = 0;        j = height.size()-1;        while(i < j)        {            if(height[i] < height[j])            {                temp = height[i]*(j-i);                    ++i;            }            else            {                temp = height[j]*(j-i);                    --j;            }            if(temp > area)                area = temp;        }        return area;    }};

代码:

public class Solution {      public int maxArea(int[] height) {          int i, j, lh, rh, area, tmp, len = height.length;            lh = height[0];          rh = height[len - 1];          area = 0;          i = 0;          j = len - 1;                    while (i < j) {              tmp = Math.min(lh, rh) * (j - i);                            if (tmp > area) {                  area = tmp;              }                            if (lh < rh) {                  while (i < j && height[i] <= lh) {                      i ++;                  }                  if (i < j) {                      lh = height[i];                  }              } else {                  while (i < j && height[j] <= rh) {                      j --;                  }                  if (i < j) {                      rh = height[j];                  }              }          }            return area;      }  }  


0 0
原创粉丝点击