[LintCode] 4 丑数Ⅱ 设计一个算法,找出只含素因子2,3,5 的第 n 小的数。 描述设计一个算法,找出只含素因子2,3,5 的第 n 小的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12... 样例12输入:9输出:10 12输入:1输出:1 思路当前丑数必定是之前某个丑数的2倍、3倍、或者5倍。 初始化丑数数组ugly[0]=1,从第一位开始分别乘以2、3、5得到后续丑数。 注意得到丑数后需要保证数组的大小顺序。 代码12345678910111213141516171819202122232425262728class Solution {public: /** * @param n: An integer * @return: return a integer as description. */ int nthUglyNumber(int n) { // write your code here int ugly[n]; ugly[0] = 1; int p2,p3,p5; p2=p3=p5=0; for(int i=1;i<n;i++) { ugly[i]=min(min(ugly[p2]*2,ugly[p3]*3),min(ugly[p2]*2,ugly[p5]*5)); if(ugly[i]==ugly[p2]*2) ++p2; if(ugly[i]==ugly[p3]*3) ++p3; if(ugly[i]==ugly[p5]*5) ++p5; } return ugly[n-1]; }}; 参考https://blog.csdn.net/htt789/article/details/79992923 LintCode Count 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处! [LeetCode] 每日一题 July 1~10 上一篇 [LintCode] 394 硬币排成线 下一篇