11.Container With Most Water

思路:
  • 首先假设选择两侧,如果想让体积变大,应该让小的一侧移动,因为想要使小的一侧遇到比原来大的高度。每次都移动小的,直到左右两侧相遇,记录移动过程中产生的最大值。复杂度为\(O(n)\)
class Solution {
public:
    int maxArea(vector<int>& height) {
        int maxRes = 0;
  		int len = height.size();
  		maxRes = min(height[0],height[len-1])*(len-1);
  		int i = 0, j = len-1;
  		int tmp = 0;
  		while(i < j){
  			tmp = min(height[i],height[j])*(j-i);
  			if(tmp > maxRes) maxRes = tmp;
  			if(height[i] > height[j])
  				j--;
  			else i++;	
  		}
  		return maxRes;
    }
};
posted @ 2017-06-05 22:52  UniMilky  阅读(112)  评论(0编辑  收藏  举报