// 三指针方法:2, 3, 5
class Solution {
public:
int nthUglyNumber(int n) {
// 判断边界条件
if(n == 0) return 0;
// 保存所有结果集
vector<int> result;
result.push_back(1);
// 三个指针从头开始遍历
int i = 0, j = 0, k = 0;
int index = n;
while(n--)
{
int num = min(result[i] * 2, min(result[j] * 3, result[k] * 5));
if(num == result[i] * 2) i++;
if(num == result[j] * 3) j++;
if(num == result[k] * 5) k++;
result.push_back(num);
}
// 返回数组中最后一个元素
return result[index - 1];
}
};