Trapping Raining Water 解答

Question

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.

Solution

referrence

Key to the solution is to know that for each point a[i], the max are is calculated by:

min(left,right) – a[i]

left is the maximum height before a[i], right is the maximum height after a[i].

Therefore, we can create two arrays to record left most height and right most height for each point. Time complexity O(n).

 1 public class Solution {
 2     public int trap(int[] height) {
 3         if (height == null || height.length < 1)
 4             return 0;
 5         int length = height.length;
 6         int[] leftMost = new int[length];
 7         int[] rightMost = new int[length];
 8         // First, find left biggest hight
 9         leftMost[0] = 0;
10         for (int i = 1; i < length; i++)
11             leftMost[i] = Math.max(leftMost[i - 1], height[i - 1]);
12
13         // Then, find right biggest hight
14         rightMost[length - 1] = 0;
15         for (int i = length - 2; i >= 0; i--)
16             rightMost[i] = Math.max(rightMost[i + 1], height[i + 1]);
17
18         // Calculate sum
19         int result = 0;
20         for (int i = 0; i < length; i++) {
21             int tmp = Math.min(leftMost[i], rightMost[i]) - height[i];
22             if (tmp > 0)
23                 result += tmp;
24         }
25         return result;
26     }
27 }
时间: 2024-10-13 14:13:26

Trapping Raining Water 解答的相关文章

Trapping Rain Water 解答

Question 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. The above elevation map is represented by array [0,1,0,2,1,0,1,3,2,1,2,1]. In this case, 6

[LeetCode][JavaScript]Trapping Rain Water

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

[LintCode] Trapping Rain Water II

Trapping Rain Water II Given n x m non-negative integers representing an elevation map 2d where the area of each cell is 1 x 1, compute how much water it is able to trap after raining. Example Given 5*4 matrix [12,13,0,12] [13,4,13,12] [13,8,10,12] [

Leetcode 407. 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 tha

Trapping Rain water 诸多细节须注意

Trapping Rain Water Total Accepted: 35650 Total Submissions: 118319My Submissions Question Solution 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.

LeetCode 042 Trapping Rain Water

题目要求: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 elevatio

[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

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie Trapping Rain Water Total Accepted: 14568 Total Submissions: 50810My Submissions Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much wate

【leetcode】Trapping Rain Water

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