python丑数算法,java丑数算法
在主题描述中,只包含因子2、3、5的数称为丑数。比如6和8是很丑的数字,但14不是,因为它包含了因子7。习惯上认为1是第一个难看的数字。从小到大求第n个丑数。
分析:这个难看的数也是无规律的,所以一般项的公式都解不出来。最暴力的方式就是一个一个的试。如果很丑,加一个;否则跳过第n个。但是,当然,你不能用这种方法。要是丑数字能连载就好了,下一个念头就是《邀剑》上的念头。我们可以列出在数组中发现的难看的数字。因为只有2、3、5三个因子,所以后面的丑数是前面的丑数乘以2、3、5得到的。另外,之前的丑号都是连载的,所以每次都需要乘以2,3,5。
代码:
类别解决方案{
公共:
intgetuglynumber _ solution(int index){
If(索引=0))
0;
int t2=0,t3=0,t5=0,I=0;
int * p=(int *)malloc)index * sizeof)int);
p[0]=1;
for(I=1;iindexI ) {
p[I]=min(2*p[T2],min )5*p[t5],5 * p[t5]);
wile(2*p[T2]=p[I])
T2;
wile(3 * p)T3)=p(I))))))wile(3 * p)T3)))wile(3 * p)T3)))wile(3 * p)T3)))652)
T3;
wile(5 * p)T5)=p(I))))))wile(5 * p)T5)))wile(5 * p)T5).
t5;
}
int ugly=p[I-1];
免费(p;
还丑;
}
(;
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。