题目描述
我们把只包含因子2、3和5的数称作丑数(Ugly Number)。求按从小到大的顺序的第n个丑数。
示例:
1 | 输入: n = 10 |
说明
1是丑数n不超过1690
思路
- 状态定义:
- 设动态规划列表
dp,dp[i]代表第i+1个丑数。
- 设动态规划列表
- 转移方程:
- 当索引
a,b,c满足一下条件时,dp[i]为三种情况的最小值。 - 每轮计算
dp[i]后,需要更新索引a,b,c的值,使其始终满足方程条件,以便下轮计算。实现方法:分别独立判断。 dp[a]*2 > dp[i-1] >= dp[a-1]*2dp[b]*3 > dp[i-1] >= dp[b-1]*3dp[c]*5 > dp[i-1] >= dp[c-1]*5
- 当索引
dp[i] = min(dp[a]*2,dp[b]*3,dp[c]*5)- 初始状态;
dp[0]=1,即第一个丑数为1。
- 返回值:
dp[n-1],即返回第n个丑数。
代码
1 | class Solution{ |
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/chou-shu-lcof/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。