剑指offer:寻找第N个丑数
剑指offer:寻找第N个丑数
题目描述:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
解题步骤:
1、 状态定义:dp[i]表示第i个丑数的值,除此之外需要定义三个变量,分别保存了当前{2,3,5}三个数的个数num2,num3,num5。
2、 状态转移方程:dp[i] = min(dp[num2]*2,min(dp[num3]*3,dp[num5]*5))
3、 初始化:dp[0]=0,num2=num3=num5=0;
4、 输出:dp[index-1]
代码: