丑数最快解法【python】 川长思鸟来 2022-04-08 08:29 401阅读 0赞 **题目描述** 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 -------------------- # 暴力算法 # 判断丑数的函数: def isUglyNum(self, num): while num % 2 == 0: num /= 2 while num % 3 == 0: num /= 3 while num % 5 == 0: num /= 5 if num == 1: return 1 return 0 如果采用暴力的解法: class Solution: def isUglyNum(self, num): while num % 2 == 0: num /= 2 while num % 3 == 0: num /= 3 while num % 5 == 0: num /= 5 if num == 1: return 1 return 0 def GetUglyNumber_Solution(self, index): # write code here if index < 1: return 0 if index == 1: return 1 result = 1 count = 1 while True: result += 1 if self.isUglyNum(result): count += 1 if count == index: return result print(Solution().GetUglyNumber_Solution(1500)) **求1500个丑数肯定会超时** -------------------- # 改进算法 # ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNjM3Mjg3OQ_size_16_color_FFFFFF_t_70] 使用T2 T3 T5表示遍历的时候乘以2 3 5,需要遍历之前的每一个数字直到求出M2 M3 M5 class Solution: def GetUglyNumber_Solution(self, index): # write code here if index < 1: return 0 if index == 1: return 1 uglyNumberList = [1] T2 , T3, T5 = 0, 0, 0 for i in range(1, index): if uglyNumberList[T2] * 2 <= uglyNumberList[i - 1]: T2 += 1 if uglyNumberList[T3] * 3 <= uglyNumberList[i - 1]: T3 += 1 if uglyNumberList[T5] * 5 <= uglyNumberList[i - 1]: T5 += 1 uglyNumber = min(uglyNumberList[T2] * 2, uglyNumberList[T3] * 3, uglyNumberList[T5] * 5) #M2 M3 M5 uglyNumberList.append(uglyNumber) return uglyNumberList[index - 1] print(Solution().GetUglyNumber_Solution(1500)) 输出:859963392 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNjM3Mjg3OQ_size_16_color_FFFFFF_t_70]: /images/20220407/31d54c601b7340ff881d0696b25fcd14.png
相关 丑数 一、题目大意 只包含因子2、3、5的数叫丑数,习惯上把1也看做丑数,求第1500个丑数。 二、分析 (1)常规做法,可对每个正整数依次遍历,直到找到第1500个丑数为止。 小咪咪/ 2023年11月20日 07:29/ 0 赞/ 135 阅读
相关 丑数 ![在这里插入图片描述][20200302095046787.png] include<stdio.h> int main() { int 朱雀/ 2023年07月10日 11:19/ 0 赞/ 152 阅读
相关 丑数 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个 矫情吗;*/ 2023年02月18日 08:16/ 0 赞/ 21 阅读
相关 丑数 \\题目描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到 r囧r小猫/ 2022年10月27日 13:48/ 0 赞/ 194 阅读
相关 丑数 把只包含因子2、3和5的数称作丑数,例如6,8都是丑数,但14不是,因为它包含因子7,习惯上我们把1当作第一个丑数,求按从小到大的顺序的第N个丑数。 输入描述:整数N 小咪咪/ 2022年06月08日 08:52/ 0 赞/ 236 阅读
相关 丑数 求第1500个丑数。丑数是不能被2.3.5之外的其他素数整除的数,把丑数从小到大排起来,然后打印第1500个 先写一个典例,我写的, //这是我写的,运行了大概15 你的名字/ 2022年05月18日 10:55/ 0 赞/ 204 阅读
相关 丑数最快解法【python】 题目描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的 川长思鸟来/ 2022年04月08日 08:29/ 0 赞/ 402 阅读
相关 丑数 时间限制:1秒 空间限制:32768K 热度指数:223966 本题知识点: 数组 算法知识视频讲解 题目描述 把只包含质因子2、3和5的数称作丑数(Ugly 本是古典 何须时尚/ 2022年03月09日 10:50/ 0 赞/ 287 阅读
相关 丑数 列表res按序存储丑数 res\[0\] = 1, 下一个丑数产生规则: 1.找出res所有数\2 中第一个 大于 res \[-1\] 的数:res\[n2\] 2 迷南。/ 2022年01月30日 07:43/ 0 赞/ 250 阅读
相关 丑数 丑数就是只包含质因数 2, 3, 5 的正整数。 1.判断丑数 2.找到第n个丑数 (代码很容易看懂) public class UglyNum { 梦里梦外;/ 2021年09月26日 23:24/ 0 赞/ 349 阅读
还没有评论,来说两句吧...