题目描述
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
代码
class Solution {
public:
int GetUglyNumber_Solution(int index) {
int i2 = 0, i3 = 0, i5 = 0;
vector<int> ugly(index, 0);
ugly[0] = 1;
int count = 1;
while (count < index) {
int ni2 = ugly[i2] * 2, ni3 = ugly[i3] * 3, ni5 = ugly[i5] * 5;
ugly[count] = min(min(ni2, ni3), ni5);//下一个ugly取最小的数
if (ugly[count] == ni2) {
++i2;
}
if (ugly[count] == ni3) {
++i3;
}
if (ugly[count] == ni5) {
++i5;
}
++count;
}
return ugly[index - 1];
}
};