[LeetCode] [Trapping Rain Water 2012-03-10]

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!

the key problem is Get B[i] and C[i] ,where B[i]
means the max forward, and C[i] means max backward.

Sum += Min(B[i] ,C[i])-A[i] >0?Min(B[i]
,C[i])-A[i]:0

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

class
Solution {

public:

    int
trap(int
A[], int
n) {

        int* B = new
int[n];

        int
sum = 0;

        int
max= 0;

        for(int
i = 0 ;i<n;i++)

        {

            B[i]=max;

            if(max < A[i])

            {

                max=A[i];   

            }

        }

        max =0 ;

        for(int
i=n-1; i>=0 ;i--)

        {

            int
h = B[i];

            if(B[i] > max)

            {

                h = max;

            }

            if(A[i] < h)

            {

                sum += h-A[i];

            }

            

            if(max < A[i])

            {

                max=A[i];   

            }

        }

        delete[] B;

        return
sum;

        

        

    }

};

[LeetCode] [Trapping Rain Water 2012-03-10]

时间: 2024-07-30 10:10:46

[LeetCode] [Trapping Rain Water 2012-03-10]的相关文章

[leetcode]Trapping Rain Water @ Python

原题地址:https://oj.leetcode.com/problems/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,

LeetCode: Trapping Rain Water [041]

[题目] 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

LeetCode: Trapping Rain Water 解题报告

https://oj.leetcode.com/problems/trapping-rain-water/ Trapping Rain WaterGiven 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,

[LeetCode] Trapping Rain Water II 收集雨水之二

Given an m x n matrix of positive integers representing the height of each unit cell in a 2D elevation map, compute the volume of water it is able to trap after raining. Note: Both m and n are less than 110. The height of each unit cell is greater th

Leetcode: Trapping Rain Water II

Given an m x n matrix of positive integers representing the height of each unit cell in a 2D elevation map, compute the volume of water it is able to trap after raining. Note: Both m and n are less than 110. The height of each unit cell is greater th

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 a

[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 a

[LeetCode] Trapping Rain Water

Note: The following idea is in fact from the last answer in this link, which leads to a clean code. I just reorganize it and add some explanations. I hope it is Ok. The following are four solutions in C/C++/Java/Python respectively. The basic idea is

leetcode Trapping Rain Water pthon

class Solution(object): def trap(self,nums): leftmosthigh = [0 for i in range(len(nums))] leftmax=0 for i in range(len(nums)): if nums[i] > leftmax: leftmax=nums[i] leftmosthigh[i] = leftmax print leftmosthigh sums=0 rightmax=0 for i in reversed(rang