剑指Offer JZ33 丑数(JavaScript)
作者:互联网
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M 热度指数:526571
本题知识点: 数学 二分
题目描述
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
示例1
输入
7
返回值
8
思路:拼凑法,每次我们只用比较3个数:用于乘2的最小的数、用于乘3的最小的数,用于乘5的最小的数。
注意:需要用3个if,防止重复,如23和32
function GetUglyNumber_Solution(index) {
// write code here
if (index <= 6) {
return index;
}
let res = [1];
let p2 = 0,
p3 = 0,
p5 = 0;
for (let i = 1; i < index; i++) {
let num = Math.min(res[p2] * 2, res[p3] * 3, res[p5] * 5);
if (num == res[p2] * 2) p2++;
if (num == res[p3] * 3) p3++;
if (num == res[p5] * 5) p5++;
res.push(num);
}
return res[index - 1];
}
答案参考自:叮叮当叮叮当
标签:丑数,index,res,JZ33,JavaScript,p3,num,let 来源: https://blog.csdn.net/weixin_44523860/article/details/115280919