剑指 offer 系列——剑指 Offer 49. 丑数
⭐️剑指 Offer 49. 丑数⭐️
🔐题目详情
我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。
示例:
复制代码
提示:
1 是丑数。
n 不超过 1690。
💡解题思路
该题定义了丑数首项为 1,并且只包含质因子 2、3 和 5(除了 1 以外,只能被 2,3,5 整除)那么丑数一定是前面丑数某一项乘以质因子的数集中的最小值,因为有三个质因子,所以该数集有三个元素。不妨设所求丑数的项数为,数集中三个数分别为,分别对应丑数第项,其中。则:
取得数集中最小值后,使最小值对应的项数加 1,比如 na 最小,则 a++。如果存在多个最小值,每个最小值对应的项数都需要加 1,,最后按照同样的方式求丑数下一项。
🔑源代码
C 语言:
复制代码
Java 语言:
复制代码
🌱总结
对于丑数或类似丑数的问题,最重要的是想出其递推公式,该题是依据丑数的后一项一定在前面某项乘以质因子所得的数集中,其最小值即是这一项。
版权声明: 本文为 InfoQ 作者【未见花闻】的原创文章。
原文链接:【http://xie.infoq.cn/article/876768f59dcb309ca83e6235c】。文章转载请联系作者。
评论