-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy path42.zy445566.js
44 lines (44 loc) · 1.15 KB
/
42.zy445566.js
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
39
40
41
42
43
44
/**
* @param {number[]} height
* @return {number}
*/
var trap = function(height) {
while (height.length>0) {
if (height[0]==0) {
height.shift();
} else {
break;
}
}
if (height.length<3) {return 0;}
let maxHeight = 0;
let minHeight = 0;
let area = 0;
let useArea = 0;
for (let i=0;i<height.length;i++) {
if (height[i]>=maxHeight) {
area+=useArea;
maxHeight = height[i];
minHeight = height[i];
useArea=0;
} else {
if (height[i]>=minHeight) {
let needArea = 0;
for (let j=i-1;j>=0;j--) {
if (height[j]>=height[i]) {
area+=needArea;
minHeight = height[j];
break;
} else {
needArea+=height[i]-height[j];
height[j] = height[i];
}
}
useArea-= needArea;
}
minHeight = height[i];
useArea+=maxHeight-height[i];
}
}
return area;
};