[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 };