313. Super Ugly Number
2016-06-26 17:54
489 查看
Write a program to find the nth super ugly number.
Super ugly numbers are positive numbers whose all prime factors are in the given prime list
size
Note:
(1)
(2) The given numbers in
(3) 0 <
106, 0 <
1000.
我的解答:
用一个数组存储每次新加入的结果,用一个数组当作primes每个数对应的结果数组的序号。
class Solution {
public:
int nthSuperUglyNumber(int n, vector<int>& primes) {
if(n <= 0) return false;
if(n == 1) return true;
vector<int>mp(primes.size(),0);
vector<int> k;
k.push_back(1);
for(int i = 1; i < n ; i ++)
{
int minn = INT_MAX;
for(int jj = 0; jj < primes.size(); jj++){
if(k[mp[jj]]*primes[jj] < minn)
minn = k[mp[jj]]*primes[jj];
}
k.push_back(minn);
for(int kk = 0; kk < primes.size(); kk++){
if(k[mp[kk]]*primes[kk] == minn){
mp[kk]++;
}
}
}
return k[n-1];
}
};
Super ugly numbers are positive numbers whose all prime factors are in the given prime list
primesof
size
k. For example,
[1, 2, 4, 7, 8, 13, 14, 16, 19, 26, 28, 32]is the sequence of the first 12 super ugly numbers given
primes=
[2, 7, 13, 19]of size 4.
Note:
(1)
1is a super ugly number for any given
primes.
(2) The given numbers in
primesare in ascending order.
(3) 0 <
k≤ 100, 0 <
n≤
106, 0 <
primes[i]<
1000.
我的解答:
用一个数组存储每次新加入的结果,用一个数组当作primes每个数对应的结果数组的序号。
class Solution {
public:
int nthSuperUglyNumber(int n, vector<int>& primes) {
if(n <= 0) return false;
if(n == 1) return true;
vector<int>mp(primes.size(),0);
vector<int> k;
k.push_back(1);
for(int i = 1; i < n ; i ++)
{
int minn = INT_MAX;
for(int jj = 0; jj < primes.size(); jj++){
if(k[mp[jj]]*primes[jj] < minn)
minn = k[mp[jj]]*primes[jj];
}
k.push_back(minn);
for(int kk = 0; kk < primes.size(); kk++){
if(k[mp[kk]]*primes[kk] == minn){
mp[kk]++;
}
}
}
return k[n-1];
}
};
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C++的template模板中class与typename关键字的区别分析