class Solution {
private:
struct A{
int a;
int b;
};
class compareA{
public:bool operator()(A item1,A item2)
{
return item1.a<item2.a;
}
};
public:
int nthSuperUglyNumber(int n, vector<int>& primes) {
if(n==1)
return 1;
vector<int> primesindex(primes.size(),0);
vector<A> generate(primes.size());
vector<int> nums(n,1);
for(int i=1;i<n;i++)
{
for(int j=0;j<primes.size();j++)
{
A temp;
temp.a=nums[primesindex[j]]*primes[j];
temp.b=j;
generate[j]=temp;
}
sort(generate.begin(),generate.end(),compareA());
int k=1;
while(generate[k].a==generate[0].a)
{
primesindex[generate[k].b]++;
k++;
}
nums[i]=generate[0].a;
primesindex[generate[0].b]++;
}
return nums[n-1];
}
};
313. Super Ugly Number
最新推荐文章于 2017-03-11 22:57:28 发布