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 ...
随机推荐
- nodejs接收get参数和post参数
get请求用query //http://localhost:3000?a=3&b=4&c=5 router.get('/', function (req, res, next) { ...
- 【Vue】----- computed与watch的区别
1.computed computed是一种计算属性,用来监听属性的变化: computed里面的方法调用的时候不需要加(),并且里面的方法必须要有一个返回值: computed里面的方法不是通过事件 ...
- kubernetes系列07—Pod控制器详解
本文收录在容器技术学习系列文章总目录 1.Pod控制器 1.1 介绍 Pod控制器是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试 进行重启,当根据重启策略无 ...
- SpringCloud系列——Ribbon 负载均衡
前言 Ribbon是一个客户端负载均衡器,它提供了对HTTP和TCP客户端的行为的大量控制.我们在上篇(猛戳:SpringCloud系列——Feign 服务调用)已经实现了多个服务之间的Feign调用 ...
- Nginx 初識
今天簡單了解了一下Nginx,并在本機安裝,并簡單配置了一下,道理什麼的還不懂,就是看能不能跑起來. 1.安裝從官網下載就好,把文件隨便解壓在一個英文目錄裡面. 然後修改配置文件,修改的內容如下: 2 ...
- Android安全——加固原理
一.前言 今天来介绍一下Android中的如何对Apk进行加固的原理.现阶段.我们知道Android中的反编译工作越来越让人操作熟练,我们辛苦的开发出一个apk,结果被人反编译了,那心情真心不舒服.虽 ...
- react 阻止事件冒泡
前言 在学习react阻止事件冒泡,需要先了解 合成事件 和 原生事件 合成事件:在jsx中直接绑定的事件,就是合成事件: 原生事件: 通过js原生代码绑定的事件,就是原生事件: react事件:re ...
- 驰骋工作流引擎JFlow与activiti的对比之2种结构化模式
1. 任意循环(Arbitrary Cycles) ACTIVITI : 某一个或多个活动可以反复执行. 例子:用户买了瓶汽水,拿到汽水后,中了一瓶,又去兑换了一瓶汽水,如果又中了,再去兑换一瓶汽水- ...
- Linux tail 命令
tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件. tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只 ...
- 五、RemoteViews
RemoteViews表示的是一个View结构,它可以在其他进程中显示.RemoteViews在Android中的使用场景有两种:通知栏和桌面小部件. 1.RemoteViews的应用 RemoteV ...