题目:
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
思路:
1.下一个丑数必定由有数组中的某一个丑数A * 2, B * 3, C * 5 的中的最小值得来。
2.用数组保存丑数
代码:
class Solution
{
public int GetUglyNumber_Solution(int index)
{
// write code here
if(index <= 0)
return 0;
int[] ugly = new int[index];
ugly[0] = 1;
int index2 = 0;
int index3 = 0;
int index5 = 0;
for(int i=1; i<index; i++)
{
ugly[i] = Min(ugly[index2]*2,ugly[index3]*3,ugly[index5]*5);
if(ugly[index2]*2 <= ugly[i])
index2++;
if(ugly[index3]*3 <= ugly[i])
index3++;
if(ugly[index5]*5 <= ugly[i])
index5++;
}
return ugly[index - 1];
}
public int Min(int a, int b, int c)
{
return (a<b?a:b)<c?(a<b?a:b):c;
}
}