leetcode 263. Ugly Number 、264. Ugly Number II 、313. Super Ugly Number 、204. Count Primes
263. Ugly Number
注意:1.小于等于0都不属于丑数
2.while循环的判断不是num >= 0, 而是能被2 、3、5整除,即能被整除才去除这些数
- class Solution {
- public:
- bool isUgly(int num) {
- if(num <= )
- return false;
- while(num % == )
- num /= ;
- while(num % == )
- num /= ;
- while(num % == )
- num /= ;
- return num == ? true : false;
- }
- };
264. Ugly Number II
用一个数组去存第n个前面的所有整数,然后记录2 、3、5当前数的索引,每次选择最小的数。注意每次满足最小数,是索引加1,不是数值本身加1
- class Solution {
- public:
- int nthUglyNumber(int n) {
- int result[n + ];
- result[] = ;
- int index = ,index2 = ,index3 = ,index5 = ;
- while(index < n){
- index++;
- int num2 = result[index2] * ;
- int num3 = result[index3] * ;
- int num5 = result[index5] * ;
- int min_num = min(num2,min(num3,num5));
- result[index] = min_num;
- if(num2 == min_num)
- index2++;
- if(num3 == min_num)
- index3++;
- if(num5 == min_num)
- index5++;
- }
- return result[n];
- }
- };
313. Super Ugly Number
这个和Ugly Number II 几乎是一样的,不同的是Ugly Number II是固定了2 、3、5这三个数,这个题是给一个数组。
- class Solution {
- public:
- int nthSuperUglyNumber(int n, vector<int>& primes) {
- int result[n+];
- result[] = ;
- vector<int> index(primes.size(),);
- int ind = ;
- while(ind < n){
- ind++;
- int min_num = INT_MAX;
- for(int i = ;i < primes.size();i++)
- min_num = min(result[index[i]] * primes[i],min_num);
- result[ind] = min_num;
- for(int i = ;i < primes.size();i++){
- if(result[index[i]] * primes[i] == min_num)
- index[i]++;
- }
- }
- return result[n];
- }
- };
204. Count Primes
质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
这个题跟丑数的题一样,也需要用数组存。
思路:用j=2一个一个乘以质数i,只要乘到的值都不是质数,因为质数只能是1和他本身
- class Solution {
- public:
- int countPrimes(int n) {
- if(n <= )
- return ;
- vector<bool> flag(n+,true);
- int count = ;
- for(int i = ;i < n;i++){
- if(flag[i] == true){
- count++;
- for(int j = ;j*i < n;j++)
- flag[j*i] = false;
- }
- }
- return count;
- }
- };
https://www.jianshu.com/p/12c0e91c696e
https://blog.csdn.net/github_39261590/article/details/73864039 图解
更新代码:
如果问题变成:求不超过10000的最大质数?用最快方法找到1到10000的质数?
只要把上面代码里面为false的坐标+1就可以得到,但是有个问题,子循环是j=1开始的,也就是会把当前的质数也变成true,对于计算个数问题不大,但是你如果要再把这些提取出来就错误了,从2开始才是真正可以泛化到其他两个问题的通用代码
leetcode 263. Ugly Number 、264. Ugly Number II 、313. Super Ugly Number 、204. Count Primes的更多相关文章
- [leetcode] 204. Count Primes 统计小于非负整数n的素数的个数
题目大意 https://leetcode.com/problems/count-primes/description/ 204. Count Primes Count the number of p ...
- [LeetCode] 313. Super Ugly Number 超级丑陋数
Write a program to find the nth super ugly number. Super ugly numbers are positive numbers whose all ...
- Leetcode 313. super ugly number
Write a program to find the nth super ugly number. Super ugly numbers are positive numbers whose all ...
- 313. Super Ugly Number
题目: Write a program to find the nth super ugly number. Super ugly numbers are positive numbers whose ...
- leetcode 264. 丑数 II 及 313. 超级丑数
264. 丑数 II 题目描述 编写一个程序,找出第 n 个丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, ...
- <LeetCode OJ> 204. Count Primes
Description: Count the number of prime numbers less than a non-negative number, n. 分析: 思路首先:一个数不是合数就 ...
- 【刷题-LeetCode】204. Count Primes
Count Primes Count the number of prime numbers less than a non-negative number, *n*. Example: Input: ...
- 263. Ugly Number + 264. Ugly Number II + 313. Super Ugly Number
▶ 三个与丑数相关的问题 ▶ 第 263题,判定一个数字是否是丑数,即其素因子是否仅由 2,3,5 构成. ● 常规消除判别,4 ms class Solution { public: bool is ...
- [LeetCode]313. Super Ugly Number超级丑数,丑数系列看这一道就行了
丑数系列的题看这一道就可以了 /* 和ugly number2差不多,不过这次的质因子多了,所以用数组来表示质因子的target坐标 target坐标指的是这个质因子此次要乘的前任丑数是谁 */ pu ...
随机推荐
- Chapter 5 Blood Type——29
"We're meeting at my dad's store, at ten." “十点,我们在我爸的店见面.” His eyes flickered to Edward ag ...
- what a fuck!这是什么鬼东西?
Topic Link http://ctf5.shiyanbar.com/DUTCTF/1.html 1) 打开链接发现一片看不懂的东西,还真是WTF? 2)分析发现是Jother编码 将其放到浏览器 ...
- LeetCode专题-Python实现之第7题:Reverse Integer
导航页-LeetCode专题-Python实现 相关代码已经上传到github:https://github.com/exploitht/leetcode-python 文中代码为了不动官网提供的初始 ...
- Java开发知识之Java的包装类
Java开发知识之Java的包装类 一丶什么是包装类 包装类的意思就是对基本数据类型封装成一个类.这些类都是Number的子类.区别就是封装数据类型不同.包含的方法基本相同. 具体可以查询JAVA A ...
- SLAM入门之视觉里程计(1):特征点的匹配
SLAM 主要分为两个部分:前端和后端,前端也就是视觉里程计(VO),它根据相邻图像的信息粗略的估计出相机的运动,给后端提供较好的初始值.VO的实现方法可以根据是否需要提取特征分为两类:基于特征点的方 ...
- 6.JAVA-链表实例
1.实现链表的步骤 1).实现Node节点类(用来保存链表中每个节点的数据,以及下一个节点成员) 2).实现LinkList链表类(用来封装Node节点类,和用户实现交互) 3).在LinkList类 ...
- Java消息中间件----ActiveMQ入门①
一 首先到ActiveMQ下载安装包 Active官网地址http://activemq.apache.org/activemq-5150-release.html 如图所示,有两个下载的链接,我们下 ...
- SpringBoot 之Actuator.
一.Actuator 介绍 Actuator 是 SpringBoot 项目中一个非常强大一个功能,有助于对应用程序进行监视和管理,通过 restful api 请求来监管.审计.收集应用的运行情况. ...
- 使用 babel-loader(webpack)
参考: https://www.jianshu.com/p/d971bffff546 定位 Webpack 速度慢的原因 打包的命令webpack后加三个参数: --colors 输出结果带彩色,比如 ...
- Thrift 入门教程
1. 概述 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Go,Python, PHP, Ruby, Erl ...