(STL,set,priority_queue)丑数
题目:
丑数是指不能被2,3,5以外的其他素数整除的数。把丑数从小到大排列起来,结果如下:1,2,3,4,5,6,8,9,10,12,…求第1500个丑数
分析与解答:
0.对于任意丑数x:2x,3x,5x也是丑数
1.用优先队列从小到大保存已生成的丑数(2x,3x,5x)//优先队列中最多存三个数
2.利用set存所有的每次生成的丑数,如果以前出现过则跳过,不存到优先队列和set里
3.每次找x从优先队列队首找,保证x是最小的,找出来后就删掉x,优先队列存(2x,3x,5x)
4.找到第1500个的时候,由于set的去重判断,和优先队列的从小到大的顺序,现在出列的一定是第1500个丑数
5.优先队列的优先级:
先出队列的元素不是先进队列的元素,而是队列中优先级最高的元素
priority_queue< int> pq
pq.top()是最大的数
priority_queue< int,vector < int >,greater < int > > pq
pq.top()是最小的数
priority_queue< int,vector < int >,cmp > pq
struct cmp{bool operator()(const int a,const int b) const{return a%10>b%10;}
}
自定义优先级:个位数大的整数优先级反而小
pq.top():个位数小的
因为类似于sort,cmp排序’>’,大各位数放到后面,小的在前面优先级高
6.代码:
#include<iostream>
#include<vector>
#include<queue>
#include<set>
#include<functional>
using namespace std;typedef long long LL;
const int coeff[3] = { 2, 3, 5 };
int main()
{priority_queue<LL, vector<LL>, greater<LL> >pq;set<LL> s;pq.push(1);s.insert(1);for (int i = 1;; i++){LL x = pq.top();pq.pop();if (i == 1500){cout << "The 1500th ugly number is" << x << endl;break;}for (int j = 0; j < 3; j++){LL x2 = x*coeff[j];if (!s.count(x2)){s.insert(x2);pq.push(x2);}}}return 0;
}
(STL,set,priority_queue)丑数相关推荐
- 【codevs1246】丑数,STL与取模大质数的好处
丑数 USACO 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 对于一给定的素数集合 S = {p1, p2, -, ...
- Leetcode 313. 超级丑数 解题思路及C++实现
解题思路: 与Leetcode 264. 丑数 II的解题思路一样,均使用最小堆来存储丑数,第i次更新最小堆时,得到第i大的丑数. 可结合Leetcode 264. 丑数 II的解题思路理解:http ...
- Leetcode 264. 丑数 II 解题思路及C++实现
方法一:暴力解法 解题思路: 直接从整数1开始,不断递增,判断该数字是否为丑数(专门写一个判断是否为丑数的函数),当遇到一个丑数,则计数值加1,直至遇到n个丑数为止. 当n很大时,这种暴力解法会遇到 ...
- LeetCode 264. 丑数 II
264. 丑数 II Ideas 竟然没想到用小根堆,白学了,再把小根堆抄一遍. Code Python class Solution:def nthUglyNumber(self, n: int) ...
- 面试题之丑数的C++实现求解(孤陋寡闻了,才知道丑数这么high的东东)
问题描述: 我们把只包含因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含因子7.习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第1500个丑数.( ...
- 62. 丑数(剑指Offer经典题)
文章目录 62. 丑数 AcWing网站原题通道 62. 丑数 分析: 从小到大生成各个丑数,最小的丑数是1,对于任意丑数x,2x.3x.5x都是丑数.这样,就可以用一个优先队列来存储丑数,每次取出最 ...
- Day28 49. 丑数
49. 丑数 文章目录 [49. 丑数](https://leetcode-cn.com/problems/chou-shu-lcof/) 解题思路 我们把只包含质因子 2.3 和 5 的数称作丑数( ...
- 丑数 uva-136 丑数
代码如下: /*丑数是指不能被2.3.5以外的其他素数整除的数,把丑数从小到大排列起来,结果如下: 1,2,3,4,5,6,8,9,10,12,15... 求出第1500个丑数. */ #includ ...
- usaco ★Humble Numbers 丑数
★Humble Numbers 丑数 对于一给定的素数集合 S = {p1, p2, ..., pK}, 来考虑那些质因数全部属于 S 的数的集合.这个集合包括,p1, p1p2, p1p1, 和 p ...
最新文章
- 好用的Span(富文本)api
- 面试官 100% 会严刑拷打的 CMS 垃圾回收器,下次面试就拿这篇文章怼回去!
- chrome浏览器中遇到bug【Error in event handler: TypeError: Cannot read property 'name' of undefined】
- android string拼接字符串_为什么阿里巴巴不建议在循环体中使用+进行字符串拼接?...
- C#下载文件(可显示进度)的方法实现
- 做最酷的Windows Phone应用
- 我的世界服务器修改数据,我的世界常用指令大全,轻松调整服务器数值状态
- Hi3559av100安装linux,海思hi3559AV100开发板参数规格介绍
- html5中的h1,HTML5语义 - 产品列表中的h1用法
- 云原生技术的挑战是什么?
- 4种方案,帮你解决Maven创建项目过慢问题
- python roberts滤波_Python 图像处理 OpenCV (12): Roberts 算子、 Prewitt 算子、 Sobel 算子和 Laplacian 算子边缘检测技术...
- 万能平板刷机软件_万能手机刷机软件下载
- 下钻图生成 highcharts-column-drilldown
- 奥城大学计算机专业,美国提供研究生双录取的大学
- UE4 RTXGI插件安装及使用
- 眼底病php 是什么病,眼底病_眼底病有哪些_眼底病怎么治疗_快速问医生
- centos7 Kafka安装
- HTTPResponse
- android桌面布局保存在哪里,android-DatePickerDialog保存屏幕上的布局旋转
热门文章
- java process exe.exec 执行exe程序
- python深度神经网络算法_02.深度神经网络算法之Python基础与数据分析
- 自动提示_EXCEL2013版突然打不开,自动修复提示1907错误
- python采用面向对象编程模式吗_如何理解 Python 中的面向对象编程?
- uboot下nand flash读写方法_鸿蒙HarmonyOS烧录方法总结
- 如何在Win11上快速加密硬盘 Win11上快速加密硬盘方法步骤
- Win11系统调节屏幕亮度的方法
- Win7旗舰版打不开任务管理器怎么办
- 2345天气王怎么查看历史天气 2345天气王如何查看历史天气
- 怎么修改腾讯视频的昵称