我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。
var nthUglyNumber = function (n) {
var nums = new Array(n).fill(0)
nums[0] = 1
var index2 = 0
var index3 = 0
var index5 = 0
/**
1, 2, 3, 4, 5, 6, 8, 9, 10, 12
0 0 0
1 0 0
1 1 0
2 1 0
2 1 1
3 2 1
*/
for (var i = 1; i < n; i++) {
nums[i] = Math.min(nums[index2] * 2, nums[index3] * 3, nums[index5] * 5)
if (nums[i] == nums[index2] * 2) {
index2++
}
if (nums[i] == nums[index3] * 3) {
index3++
}
if (nums[i] == nums[index5] * 5) {
index5++
}
}
return nums[n - 1]
}