leetcode -- Trapping Rain Water

Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.

For example, 
Given [0,1,0,2,1,0,1,3,2,1,2,1], return 6.

The above elevation map is represented by array [0,1,0,2,1,0,1,3,2,1,2,1]. In this case, 6 units of rain water (blue section) are being trapped. Thanks Marcos for contributing this image!

本题寻找当前index的最高左右边界,当前index可蓄水量=(min(left, right) - cur)

 1 public class Solution {

 2     public int trap(int[] A) {

 3         // Start typing your Java solution below

 4         // DO NOT write main() function

 5         int len = A.length;

 6         int l = 0, r = 0;

 7         int result = 0;

 8         

 9         for(int i = 1; i < len - 1; i++){

10             for(int m = 0; m < i; m ++){

11                 if(A[m] > l){

12                     l = A[m];

13                 }            

14             }

15             

16             for(int n = len - 1; n > i; n --){

17                 if(A[n] > r){

18                     r = A[n];

19                 }

20             }

21             

22             int min = Math.min(l, r);

23             if(min - A[i] > 0){

24                 result += min - A[i];

25             }

26             l = 0;

27             r = 0;

28         }

29         return result;

30     }

31 }

 

ref:http://tech-wonderland.net/blog/leetcode-trapping-rain-water.html

你可能感兴趣的:(LeetCode)