【刷算法】丑数

简介: 【刷算法】丑数

题目描述


把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。


分析


首先从题目可以知道,对于一个丑数p,p*2、p*3、p*5都是丑数。

那么从第一个丑数1开始,1*2、1*3、1*5都是丑数,最小的2是第二个丑数;

对于第二个丑数2来说,又多出来三个需要被比较的数字,即2*2、2*3、2*5,再加上第一轮挑剩下的1*3、1*5,但是这里显然可以看出来,1*3<2*3,1*5<2*5,所以其实只需要比较2*2、1*3、1*5即可。

......

按照这样的节奏比下去即可。


代码实现


function GetUglyNumber_Solution(index) { if(index < 7)

return index; var res = []; res[0] = 1; var t2 = 0, t3 = 0, t5 = 0;

for(var i = 1;i < index;i++){
    res[i] = Math.min(res[t2]*2, Math.min(res[t3]*3, res[t5]*5));
    if(res[i] === res[t2]*2)
        t2++;
    if(res[i] === res[t3]*3)
        t3++;
    if(res[i] === res[t5]*5)
        t5++;
}
return res[index-1];
复制代码




相关文章
|
算法 前端开发
前端算法-丑数
前端算法-丑数
|
存储 算法 C++
【每日算法Day 81】面试经典题:关于丑数,你真的理解为什么这么算吗?
【每日算法Day 81】面试经典题:关于丑数,你真的理解为什么这么算吗?
|
算法 C++
|
算法
算法题每日一练---第76天:丑数 l
丑数 就是只包含质因数 2、3 和 5 的正整数。
156 1
算法题每日一练---第76天:丑数 l
|
算法 Java C++
LeetCode(算法)- 264. 丑数 II
LeetCode(算法)- 264. 丑数 II
82 0
|
存储 算法
[leetcode/lintcode 题解] 阿里算法面试真题:丑数 II · Ugly Number II
[leetcode/lintcode 题解] 阿里算法面试真题:丑数 II · Ugly Number II
[leetcode/lintcode 题解] 阿里算法面试真题:丑数 II · Ugly Number II
|
算法 C++
经典算法详解(9)寻找丑数
题目:我们把只含有因子2、3、5的数称为丑数。例如6、8都是丑数,而14不是丑数,因为它含有因子7.通常也把1当做丑数。编程找出1500以内的全部丑数。注意:使用的算法效率应尽量高。 C++实现: 1 #include 2 3 using namespace std; 4 5 //判...
1532 0
|
算法
每日一道算法题-寻找丑数
  题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。
1120 0
|
19天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
|
5天前
|
供应链 算法 调度
排队算法的matlab仿真,带GUI界面
该程序使用MATLAB 2022A版本实现排队算法的仿真,并带有GUI界面。程序支持单队列单服务台、单队列多服务台和多队列多服务台三种排队方式。核心函数`func_mms2`通过模拟到达时间和服务时间,计算阻塞率和利用率。排队论研究系统中顾客和服务台的交互行为,广泛应用于通信网络、生产调度和服务行业等领域,旨在优化系统性能,减少等待时间,提高资源利用率。