int solve(int n){ // n表示需要找到第几个丑数 int cnt = 0; int x = 1; while(true){ if(check(x)){ cnt++; } if (cnt == n){ break; } x++; } return x; } 为了找到第1500个丑数,我们只需要调用solve(1500)即可。 但是,该方法有一个潜在问题,就是其复杂度可能会很高,具体取决于...
1 是丑数。n 不超过1690。三、解题思路 根据题意,我们要获取从小到大顺序的第n个丑数,那么对于任意一个丑数,其计算公式就是:2的x次方 * 3的y次方 * 5的z次方(x,y,z分别表示数字2、3、5的出现次数);针对以上逻辑,我们就针对数字2、数字3和数字5创建3个指针,分别为:index2、index3和index5...
质数:一个数的因子只有1和这个数本身,那么这个数就是质数。比如2的因子只有1和2;5的因子只有1和5;所以2,5是质数。丑数:有质因子2,3,5,丑数=小丑数*(2或3或5),丑数的因子分解出来可以全是2,3,5。比如12=2*2*3,10=2*5,9=3*3*3。公式为:2x*3y*5z 解题思路:由上面的说法可以想出一种简单...
1为丑数,后面的丑数是在1的基础上*2、*3、*5,所得的数,丑数=丑数*2或者*3或者*4。题目是按升序输入第N个丑数;思路也比较的简单,将算出的丑数存起来,然后再返回N-1的个值。 源代码 1 public static int GetUglyNumber_Solution(int index) { 2 ArrayList<Long> arrayList=new ArrayList<>(); 3...
题目来源:剑指 Offer 49. 丑数题干:我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑…
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 如果n = 9, 返回 10。注意事项:我们可以认为1也是一个丑数。 输入
【剑指offer】49.丑数 49.丑数 面试题49. 丑数 难度中等26 我们把只包含因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。
剑指Offer(三十三):丑数 一、前言 本系列文章为《剑指Offer》刷题笔记。 刷题平台:牛客网 书籍下载:共享资源 二、题目 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
丑数1 2 3 4 5 6 8 9 10等等,每个丑数一定是前面某个数的235倍数,可结合动态规划思想,设置三个步进下标ijk,将已知丑数依次乘235得到后续丑数,在此过程中还需要确保丑数是从小到大放入容器的,即进行最小值比较。 为了直观些,简单模拟下前面几步的流程: ...
三种可能只要满足其中一种,就可以确认是丑数了。代码使用dp[i]表示i是否为丑数。由于不知道第index个丑数到底是第几个数,所以使用vector保存。class Solution { public: int GetUglyNumber_Solution(int index) { if(index <= 6) // 1...6都是丑数 return index; vector<bool> dp(7,true); int count...