Puddles Volume
by Tim Ko
JavaScript
function puddleVolume(input) {
var volume = 0;
if (input.length == 0) {
return volume;
}
var left = 0, right = input.length-1;
var heightLeft = input[left], heightRight = input[right];
left++, right--;
while (left <= right) {
if (heightLeft <= heightRight) {
if (input[left] >= heightLeft) {
heightLeft = input[left];
} else {
volume += heightLeft - input[left];
//console.log("Adding: " + (heightLeft - input[left]));
}
left++;
} else {
if (input[right] >= heightRight) {
heightRight = input[right];
} else {
volume += heightRight - input[right];
//console.log("Adding: " + (heightRight - input[right]));
}
right--;
}
}
return volume;
}
console.log(puddleVolume([2,5,1,2,3,4,7,7,6])); // 10
console.log(puddleVolume([1,5,1,2,3,8,2,5,2,4,6,8,4,1,6])); // 37
console.log(puddleVolume([1,5])); // 0
console.log(puddleVolume([5,1,5])); // 4
console.log(puddleVolume([1,5,1])); // 0