[LeetCode] Container With Most Water

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

从最外侧向内侧搜索, 在长度最长的情况下 保证高度尽量高. 注意如果左边第一个直线是所有直线里最长的情况.

所以我采用左右各遍历一次的方法a了.然后看了题解发现自己好弱智. 还是贴自己的沙茶代码吧.

 1 class Solution {
 2 public:
 3     int maxArea(vector<int> &height) {
 4         int re = 0;
 5         int cur = 0;
 6         int i = (int)height.size() - 1;
 7         while (cur < i) {
 8             if (height[i] >= height[cur]) {
 9                 int t = (i - cur) * height[cur];
10                 re = t > re ? t : re;
11                 ++cur;
12             } else {
13                 --i;
14             }
15         }
16         cur = (int)height.size() - 1;
17         i = 0;
18         while (i < cur) {
19             if (height[i] >= height[cur]) {
20                 int t = (cur - i) * height[cur];
21                 re = t > re ? t : re;
22                 --cur;
23             } else {
24                 ++i;
25             }
26         }
27         return re;
28     }
29 };

 

posted @ 2014-01-03 22:53  NextLife  阅读(150)  评论(0)    收藏  举报