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的更多相关文章

  1. [leetcode] 204. Count Primes 统计小于非负整数n的素数的个数

    题目大意 https://leetcode.com/problems/count-primes/description/ 204. Count Primes Count the number of p ...

  2. [LeetCode] 313. Super Ugly Number 超级丑陋数

    Write a program to find the nth super ugly number. Super ugly numbers are positive numbers whose all ...

  3. Leetcode 313. super ugly number

    Write a program to find the nth super ugly number. Super ugly numbers are positive numbers whose all ...

  4. 313. Super Ugly Number

    题目: Write a program to find the nth super ugly number. Super ugly numbers are positive numbers whose ...

  5. leetcode 264. 丑数 II 及 313. 超级丑数

    264. 丑数 II 题目描述 编写一个程序,找出第 n 个丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, ...

  6. &lt;LeetCode OJ&gt; 204. Count Primes

    Description: Count the number of prime numbers less than a non-negative number, n. 分析: 思路首先:一个数不是合数就 ...

  7. 【刷题-LeetCode】204. Count Primes

    Count Primes Count the number of prime numbers less than a non-negative number, *n*. Example: Input: ...

  8. 263. Ugly Number + 264. Ugly Number II + 313. Super Ugly Number

    ▶ 三个与丑数相关的问题 ▶ 第 263题,判定一个数字是否是丑数,即其素因子是否仅由 2,3,5 构成. ● 常规消除判别,4 ms class Solution { public: bool is ...

  9. [LeetCode]313. Super Ugly Number超级丑数,丑数系列看这一道就行了

    丑数系列的题看这一道就可以了 /* 和ugly number2差不多,不过这次的质因子多了,所以用数组来表示质因子的target坐标 target坐标指的是这个质因子此次要乘的前任丑数是谁 */ pu ...

随机推荐

  1. [十六]基础类型BigInteger简介

        BigInteger和BigDecimal都是Java针对大数提供的类 超出了java的表示范围   属性简介 借助于signum和mag 来实现数据的符号位和实际数据的保存 final in ...

  2. .NetCore2.1 WebAPI 根据swagger.json自动生成客户端代码

    前言 上一篇博客中我们可以得知通过Swagger插件可以很方便的提供给接口开发者在线调试,但是实际上Swagger附带的功能还有很多, 比如使用NSwag生成客户端调用代码,进一步解放接口开发者. N ...

  3. Spring中用了哪些设计模式

    1 简单工厂模式 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一. 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类. ...

  4. 使用Advanced Installer制作IIS安装包(一:配置IIS和Web.config)

    前言:大过年的,写篇文章不容易,还是给自己点个赞~~年前找了下.net安装包的制作方法,发现Visual Studio自带的制作工具使用起来非常麻烦,需要单独下载安装包,并且什么激活认证等等屁事相当麻 ...

  5. 杭电ACM2006--求奇数的乘积

    求奇数的乘积 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  6. 【Unity】微软的一款依赖注入组件

    前言 前面学习了autofac这个依赖注入组件,本来是打算写在一起的,因为这个组件没打算像autofac一样详细的写,只是写下以前自己鼓捣玩搭建框架然后使用的一个依赖注入组件,并且也是进行了封装使用. ...

  7. Java开发笔记(二十一)二维数组的扩展

    前面介绍的数组容纳的是一串数字,仿佛一根线把这组数字串了起来,故而它只是一维数组.一维数组用来表示简单的数列尚可,要是表达复杂的平面坐标系,那就力不从心了.由于平面坐标系存在水平和垂直两个方向,因此可 ...

  8. 前端导出excel数据-jsonToExcel

    咳咳,好久没有写博了... 在工作中遇到了纯前端,将数据导出为excel文件.正文开始: 第一步 安装依赖: npm i xlsx 第二步 写导出函数: import XLSX from 'xlsx' ...

  9. 【20190129】CSS-垂直水平居中相关

    元素居中是HTML和CSS永恒的问题,记录一下我使用的居中方法: 1. 块状元素水平居中,主要用于页面整体布局:   margin: 0 auto; 2. 文字水平居中,适用于内联元素或inline- ...

  10. Vue脚手架搭建项目

    全局安装vue脚手架 $ npm install -g vue-cli 卸载方法 $ npm uninstall -g vue-cli 查看vue版本(注意:大写的V) $ vue -V 创建项目 $ ...