A classical interview question

stackoverflow.com/questions/24414700/amazon-water-collected-between-towers jacquerie.github.io/google-foobar-post-mortem/

by Matthias

HTML

<pre></pre>

JavaScript

var a = [1, 5, 3, 7, 2];
log(a);
var water = 0;

$.each(a, function (key, i) {
    log("a["+key+"] = "+i);
    if (i > a[key + 1]) { //if next to right in array is bigger
        log("  a["+key+"] = "+i+": right is smaller: "+a[key + 1]);
        for (j = 1; j <= a.length - key; j++) { //number of remaining towers to the right
            if (a[key+1 + j] >= i) { //if next next… tower is bigger than or equal to first tower
                log("  a["+(key+1+j)+"] = "+a[key+1+j]+": is bigger than or equal to: "+i);
                for (k = 1; k < 1+j; k++) {
                    water += a[key] - a[key + k];
                }
            }
        }
    }
});

console.log("Water: "+water);

function log(s) {
    console.log(s);
    $("pre").append(s+"\n");
}