思路就是循环从小到大一次找出所有的丑陋数(主要因数仅为2, 3, 5);
/**
* @param {number} n
* @return {number}
*/
var cache = [1]; //第一个丑陋数是1;
var p1 = 0;
var p2 = 0;
var p3 = 0;
var nthUglyNumber = function(n) {
var m, r1, r2, r3;
var i = cache.length;
for( ; i < n; i++){
r1 = cache[p1] * 2;
r2 = cache[p2] * 3;
r3 = cache[p3] * 5;;
m = Math.min(r1, r2, r3);
if(m == r1) p1++;
if(m == r2) p2++;
if(m == r3) p3++;
cache[i] = m;
}
return cache[n - 1];
};