It's much simpler, if there's an increasing run of length k, it contains k(k+1)/2 subruns. So you can just do one pass over the array, keeping track of the length of the current run.<p><pre><code> function f(arr) {
var j=0, ret=0;
for (var i=1; i<=arr.length; i++) {
if (i==arr.length || arr[i]<=arr[i-1]) {
ret += (i-j)*(i-j+1)/2;
j = i;
}
}
return ret;
}</code></pre>