描述
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
示例1
输入:
7
返回值:
8
解题思路
所谓一个数m是n的因子,意思是m可以被n整除。即n%m==0
丑数是因子为2、3和5的数:即丑数n可以连续整除2或3或5
则:一个数P2为丑数,那么P2*2也是丑数
一个数P3为丑数,那么P3*3也是丑数
一个数P5为丑数,那么P5*5也是丑数
我们可以算出来最小的那个丑数,就需要进行比较
import java.util.*;
public class Solution {
public int GetUglyNumber_Solution(int index) {
if (index <= 0) {
return 0;
}
int[] u = new int[index];
u[0] = 1;
int p2 = 0;
int p3 = 0;
int p5 = 0;
for (int i=1;i<index;i++) {
u[i] = Math.min(u[p2]*2, Math.min(u[p3]*3, u[p5]*5));
if (u[i] == u[p2]*2) {
p2++;
}
if (u[i] == u[p3]*3) {
p3++;
}
if (u[i] == u[p5]*5){
p5++;
}
}
return u[index-1];
}
}
不行了,吐血了,今天的题咋都那么难。。。
不会是我挑挑拣拣的把好做的题都先做了吧,,嗐~