题目描述
我们把只包含因子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]*2
dp[b]*3 > dp[i-1] >= dp[b-1]*3
dp[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/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。