先来分析下错误的代码吧,之前想的比较简单,直接从2,3,5的倍数开始搞,根本就没想到要从2,3,5三个集合里面的数寻找最小数,后来是看了yz的视频。。。
class Solution {
public:
int ans;
int getUglyNumber(int n) {
if(n<0) return 0;
if(n==1) return 1;
int i=1,j=1,k=1;
while(n-->1)
{
ans=min(i*2,min(j*3,k*5));
if(i*2==ans) i++;
if(j*3==ans) j++;
if(k*5==ans) k++;
}
return ans;
}
};
class Solution {
public:
int getUglyNumber(int n) {
vector<int> q;
q.push_back(1);
int i=0,j=0,k=0;
while(n-->1)
{
int m=min(q[i]*2,min(q[j]*3,q[k]*5));
q.push_back(m);
if(q[i]*2==m) i++;
if(q[j]*3==m) j++;
if(q[k]*5==m) k++;
}
return q.back();
}
};