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