[LeetCode] Trapping Rain Water

http://oj.leetcode.com/problems/trapping-rain-water/

思路 就是 先从左往右走, 将递增产生的水坑给算出来, 再从右往左左走, 将递增的水坑给算出来.

代码写的很劣, 居然ac了, 我得看看题解去.

 1 class Solution {
 2 public:
 3     int trap(int A[], int n) {
 4         int re = 0;
 5         int cur = 0;
 6         for (int i = 1; i < n && A[i] >= A[cur]; ++i) ++cur;
 7         for (int i = cur + 1; i < n; ++i) {
 8             if (A[i] > A[cur]) {
 9                 for (int j = cur + 1; j < i; ++j) {
10                     re -= A[j];
11                 }
12                 int t = A[cur] * (i - cur - 1);
13                 re += t;
14                 cur = i;
15             }
16         }
17         cur = n - 1;
18         for (int i = n - 2; i >= 0 && A[i] >= A[cur]; --i) --cur;
19         for (int i = cur - 1; i >= 0; --i) {
20             if (A[i] >= A[cur]) {
21                 for (int j = i + 1; j < cur; ++j) {
22                     re -= A[j];
23                 }
24                 int t = A[cur] * (cur - i - 1);
25                 re += t;
26                 cur = i;
27             }
28         }
29         return re;
30     }
31 };

 

posted @ 2014-01-06 21:02  NextLife  阅读(210)  评论(0)    收藏  举报