Super Ugly Number
1. 解析
这道题Ugly Number II 的升级版,题目大意,求解第n个super Ugly Number,super Ugly Number(除1之外)的因子只存在因子列表primes中,换汤不换药,只是将3个因子改成了n个因子
2. 分析
最直接的做法就是利用优先队列,每次取出最小的数,然后依次和因子列表primes中的每个因子依次相乘,以产生下一个super Ugly Number,为了过滤掉已经出现过的数,将已经产生的数在hashtable中备份,每次先在hashtable中先检索产生的ugly Number是否出现过,若没有,放进队列,若已经存在,不放进队列里面。
class Solution {
public:int nthSuperUglyNumber(int n, vector<int>& primes) {priority_queue<long long, vector<long long>, greater<long long>> nums(1, 1);map<long long, bool> exist;while (--n > 0){long long num = nums.top();nums.pop();for (auto prime: primes){if (exist[prime*num]) continue; //若产生的数之前已经产生过,不放进队列nums.push(prime*num);exist[prime*num] = true;}}return nums.top();}
};
3. 动态规划法
由3个变量替换成n个元素的数组即可,详见 Ugly Number II
class Solution {
public:int nthSuperUglyNumber(int n, vector<int>& primes){vector<int> counts(primes.size(), 0);vector<int> nums(primes.size());vector<int> res(1, 1);while (res.size() < n){int minNum = INT_MAX;for (int i = 0; i < primes.size(); ++i){nums[i] = primes[i] * res[counts[i]];if (minNum > nums[i])minNum = nums[i];} res.push_back(minNum);for (int i = 0; i < nums.size(); ++i) if (minNum == nums[i]) counts[i]++;}return res.back();}
};
4. 类似题目
Ugly Number II
Super Ugly Number相关推荐
- leetcode 263, 264, 1201, 313. Ugly Number I, II, III, Super Ugly Number(leetcode 丑数问题合集)
263. Ugly Number https://leetcode.com/problems/ugly-number/ 本题题解由下面的 264. Ugly Number II 改造而来,所以效率会比 ...
- LeetCode Super Ugly Number
题意:给出一个素数数组,求其第n个的丑数 思路:用idx数组表示在计算第i个丑数时,与素数数组对应的前一个丑数的下标.在计算完第i个丑数后,需要更新下次计算时的对应素数的下标 代码如下: public ...
- ugly number
ugly number 是指质因数只有2, 3, 5的正整数. 1. 判断一个数是否为ugly number bool isUgly(int num) {if(num <= 0) return ...
- LeetCode 264. Ugly Number II--C++,Python解法
题目地址:Ugly Number II - LeetCode Write a program to find the n-th ugly number. Ugly numbers are positi ...
- 剑指offer:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
问题:把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 通俗易懂的 ...
- leetcode 264. Ugly Number II
传送门 264. Ugly Number II QuestionEditorial Solution My Submissions Total Accepted: 36259 Total Submis ...
- Leet Code OJ 263. Ugly Number [Difficulty: Easy]
题目: Write a program to check whether a given number is an ugly number. Ugly numbers are positive num ...
- 丑数 Ugly Number
为什么80%的码农都做不了架构师?>>> 问题: Write a program to check whether a given number is an ugly numb ...
- LeetCode - Medium - 264. Ugly Number II
Topic Math Dynamic Programming Heap Description https://leetcode.com/problems/ugly-number-ii/ Analys ...
最新文章
- tabcontainer控件太长_AjaxControlToolKit--TabContainer控件的介绍收藏[摘录]
- 《 郝斌 java自学视频 完结 》_《[郝斌]Java自学视频[完结]》AVI[压缩包]
- git tag和branch的区别
- HDU--1872 稳定排序
- Linux 应用程序 网络通讯函数记录
- 【华为云技术分享】原来CTR预估模型的发展有这样的规律
- 【英语学习】【Level 07】U05 Best Destination L2 The City of Lights
- linux mysql 没有密码忘记,在linux系统中,如果忘记了MySQL的root密码,有没有办法重新设置新密码呢?...
- .Net下采用Base64编码的一个封装好的类库
- 可做fft分析吗_2020速卖通还要做吗?速卖通2020年市场分析!
- jspdf打印、pdf打印
- post接口请求测试,通俗易懂
- Vue开发者工具安装祥析
- 《SysML精粹》学习记录--第二章
- 【转载】跟我一起写 Makefile(一)
- Java 创建并用应用幻灯片母版
- 多重共线性是如何影响回归模型的
- 论文中不带边框表格制作方法
- Geoffrey Hinton获得时间检验奖;AI预测世界杯荷兰夺冠;Galactica不靠谱,ChatGPT又如何……...
- 计算机专业问题在线解答,计算机科学专业的编程问题,在线解答,有问必答
热门文章
- 用photoshop拼接一个七巧板图案
- html5获取当前位置的api腾讯地图,腾讯地图JavaScript API调用
- 点燃我,温暖你,李峋同款爱心代码!
- python实现图书管理系统——通过excel文件或者TXT文件存放数据
- 如何用计算机算时间,在win10电脑的计算器中如何进行日期的计算
- 腾讯T3大牛亲自讲解!面试字节跳动Android研发岗,值得收藏!
- 《高性能MySQL》(第三版)之一:MySQL架构与基础
- 如何在Mac上停止使用iCloud照片库?
- 我的XBox手柄怎么有线断连了
- MySQL导入数据库1118错误解决方案[ERR] 1118 - Row size too large (> 8126). Changing some columns to TEXT or BLOB