4/06/2014

Leetcode -- Trapping Rain Water

class Solution {  
 public:  
   int trap(int A[], int n) {  
     int last = 0;  
     int totalWater = 0;  
     for (int i = 1; i < n; ++i) {  
       if(A[i] >= A[last]) {  
         int water = 0;  
         for(int j = last +1; j < i; ++j) {  
           water += A[last] - A[j];  
         }  
         totalWater += water;  
         last = i;  
       }  
     }  
     //reverse  
     int rlast = n - 1;  
     for(int i = n - 2; i >= last; --i) {  
       if(A[i] >= A[rlast]) {  
         int water = 0;  
         for(int j = rlast - 1; j > i; --j) {  
           water += A[rlast] - A[j];  
         }  
         totalWater += water;  
         rlast = i;  
       }  
     }  
     return totalWater;  
   }  
 };  

No comments: