题目:
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
如果a < b < c的话,那么2a<2b<2c,取掉a之后,b<2b, c<2c一定成立,那么下一轮让2a,b,c 这三个数比较就好了
public class Solution {
public int GetUglyNumber_Solution(int index) {
if(index<7)
return index;
int [] ugly = new int[index];
ugly[0]=1;
int p2=0,p3=0,p5=0;
for(int i=1;i<index;i++){
ugly[i]=minNumber(ugly[p2]*2,ugly[p3]*3,ugly[p5]*5);
if(ugly[i]==ugly[p2]*2)
p2++;
if(ugly[i]==ugly[p3]*3)
p3++;
if(ugly[i]==ugly[p5]*5)
p5++;
}
return ugly[index-1];
}
public int minNumber(int a,int b,int c){
int m=(a<b)?a:b;
m=(m<c)?m:c;
return m;
}
}
1847

被折叠的 条评论
为什么被折叠?



