leetcode Super Ugly Number
2015-12-03 22:04
393 查看
原题链接:https://leetcode.com/problems/super-ugly-number/
Super ugly numbers are positive numbers whose all prime factors are in the given prime list primes of 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) 1 is a super ugly number for any given primes.
(2) The given numbers in primes are in ascending order.
(3) 0<k≤100,0<n≤106,0<primes[i]<1000.
优先队列。。
Description
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 primes of 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) 1 is a super ugly number for any given primes.
(2) The given numbers in primes are in ascending order.
(3) 0<k≤100,0<n≤106,0<primes[i]<1000.
优先队列。。
class Solution { private: typedef long long ll; struct Node { ll val; int idx, prim; Node(ll _v_ = 0, int _i_ = 0, int _p_ = 0) :val(_v_), idx(_i_), prim(_p_) {} inline bool operator<(const Node &x) const { return val > x.val; } }; typedef priority_queue<Node> PQ; public: int nthSuperUglyNumber(int n, vector<int>& primes) { PQ q; vector<ll> ans(n + 10); ans[0] = 1; int len = primes.size(); for (int i = 0; i < len; i++) { q.push(Node(primes[i], 0, primes[i])); } for (int i = 1; i < n; i++) { Node ret = q.top(); ans[i] = ret.val; while (true) { ret = q.top(); q.pop(); ret.val = ans[++ret.idx] * ret.prim; q.push(ret); if (q.top().val != ans[i]) break; }; } return (int)ans[n - 1]; } };
相关文章推荐
- Linux学习笔记(十二、选项帮助)
- python 中 类, 模块, 包的组织
- 对于整数的处理(最小的与第一个交换,最大的与最后一个交换)
- mybatis实战教程之四:实现关联数据的查询
- 搭建双塔-P1037
- PAT练习基础编程题目之阶乘计算升级版
- 移动端 IScroll 源码解读
- 1203《操作系统教程》实验三 进程调度模拟程序
- 在Ubuntu环境部署Apache Spark集群
- 解决Gradle project sync failed
- codeforces 604B More Cowbell
- 智传播客hadoop视频学习笔记(共2天)
- 20151203 ocp 052 卷3 55-70
- LeetCode 299 : Bulls and Cows (Java)
- hadoop学习记录
- poj 1365 Prime Land 素因数分解
- VS2012 打开C++项目时出现MSB8020的错误代码
- 第一讲 递归与循环2
- HDFS的命令行操作
- 继承与多态(一):使用继承扩展类