时间限制:1秒
空间限制:32768K
热度指数:117392
算法知识视频讲解
题目描述
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
class Solution {
public:
int GetUglyNumber_Solution(int index) {
if(index==0)
return 0;
long long now=1;
set<long long> s;
int ans=index;
while(--ans!=0){
s.insert(now*2);
s.insert(now*3);
s.insert(now*5);
set<long long >:: iterator it = s.begin();
now=*it;
s.erase(*it);
}
return now;
}
};
看了下别人的代码,比我的快。。
class Solution {
public:
int GetUglyNumber_Solution(int index) {
if(index==0)
return 0;
vector <int > ans;
ans.push_back(1);
int i2=0,i3=0,i5=0;
for(int i=1;i<index;i++){
int num=ans[i2]*2;
num=min(num,ans[i3]*3);
num=min(num,ans[i5]*5);
if(num==ans[i2]*2) i2++;
if(num==ans[i3]*3) i3++;
if(num==ans[i5]*5) i5++;
ans.push_back(num);
}
return ans[index-1];
}
};