Leetcode-trapping Rain Water
Last Update:2015-12-25
Source: Internet
Author: User
<span id="Label3"></p><p><p>Topic:</p></p><p><p>Given <em>n</em> non-negative integers representing an elevation map where the width of each bar are 1, compute how much WA ter It is the able to trap after raining.</p></p><p><p>For example,<br>Given <code>[0,1,0,2,1,0,1,3,2,1,2,1]</code> , return <code>6</code> .</p></p><p><p><br></p></p><p style="font-size: 11px;"><p style="font-size: 11px;">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 the rain water (blue Section) is being trapped. <strong>Thanks Marcos</strong> for contributing this image!</p></p><p style="font-size: 11px;"><p style="font-size: 11px;"><span style="font-size: 14px;">Ideas:</span></p></p><p style="font-size: 11px;"><p style="font-size: 11px;"><span style="font-size: 14px;">1. Find the highest point index</span></p></p><p style="font-size: 11px;"><p style="font-size: 11px;"><span style="font-size: 14px;">2. Calculate the area of points between (0, Index) and (index, n-1)</span></p></p><pre><span style="color: #0000ff;"><span style="color: #0000ff;"></span> package</span><span style="color: #000000;">area <span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span> <span style="color: #0000ff;"><span style="color: #0000ff;">class</span></span><span style="color: #000000;"><span style="color: #000000;">Trappingrainwater {</span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span> <span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>Trap<span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span><span style="color: #000000;"><span style="color: #000000;">[] Height) { </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span><span style="color: #000000;"><span style="color: #000000;">n; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(height = =<span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span>|| (n = Height.length) = = 0)<span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span>0<span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>Area = 0<span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>MaxHeight = height[0<span style="color: #000000;"><span style="color: #000000;">]; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>Maxheightindex = 0<span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> for</span>(<span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>i = 1; I < n; ++<span style="color: #000000;"><span style="color: #000000;">I) {</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(height[i] ><span style="color: #000000;"><span style="color: #000000;">Maxheight) {maxheight</span></span>=<span style="color: #000000;"><span style="color: #000000;">height[i]; Maxheightindex</span></span>=<span style="color: #000000;"><span style="color: #000000;">i; } } </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>Leftmax = height[0<span style="color: #000000;"><span style="color: #000000;">]; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> for</span>(<span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>i = 1; I < maxheightindex; ++<span style="color: #000000;"><span style="color: #000000;">I) {</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(height[i] ><span style="color: #000000;"><span style="color: #000000;">leftmax) Leftmax</span></span>=<span style="color: #000000;"><span style="color: #000000;">height[i]; </span>area</span>+ = (leftmax-<span style="color: #000000;"><span style="color: #000000;">height[i]); } </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>Rightmax = height[n-1<span style="color: #000000;"><span style="color: #000000;">]; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> for</span>(<span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>i = n-2; i > maxheightindex; --<span style="color: #000000;"><span style="color: #000000;">I) {</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(height[i] ><span style="color: #000000;"><span style="color: #000000;">rightmax) Rightmax</span></span>=<span style="color: #000000;"><span style="color: #000000;">height[i]; </span>area</span>+ = rightmax-<span style="color: #000000;"><span style="color: #000000;">height[i]; } </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;">area <span style="color: #000000;">; } </span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span> <span style="color: #0000ff;"><span style="color: #0000ff;">Static</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">main (string[] Args) {</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">TODO auto-generated Method Stub</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>[] height = {<span style="color: #008000;"><span style="color: #008000;">/*</span></span><span style="color: #008000;"><span style="color: #008000;">0,1,0,2,1,0,1,3,2,1,2,1</span></span><span style="color: #008000;"><span style="color: #008000;">*/</span></span>5,2,1,2,1,5<span style="color: #000000;"><span style="color: #000000;"> }; Trappingrainwater T</span></span>=<span style="color: #0000ff;"><span style="color: #0000ff;">New</span></span><span style="color: #000000;"><span style="color: #000000;">Trappingrainwater (); System.out.println (t.trap (height)); }}</span></span></pre><p><p></p></p><p><p>Leetcode-trapping Rain Water</p></p></span>