因为Ugly Number 可以分解为2 3 5的乘积,所以可以可以直接在set中存放从1开始的Ugly Number ,第一次存放 1*2 , 1*3 1*5, 然后取出1,代表第一次取值。 然后第二次取出2 存入 2*2, 2*3, 2*5 依次类推。
class Solution {
public:
int nthUglyNumber(int n) {
set<long> st;
st.insert(1);
long num = 1;
for(int i=0;i<n;i++){
num = *st.begin();
st.erase(num);
st.insert(num * 2);
st.insert(num * 3);
st.insert(num * 5);
}
return num;
}
};