题目
给你一个整数 n ,请你找出并返回第 n 个 丑数 。
丑数 就是只包含质因数 2、3 和/或 5 的正整数。
示例 1:
输入:n = 10
输出:12
解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。
示例 2:
输入:n = 1
输出:1
解释:1 通常被视为丑数。
代码
func nthUglyNumber(n int) int {
dp := make([]int,n)
dp[0]=1
p2,p3,p5:=0,0,0
var p *int
for i:=1;i<n;i++{
v := dp[p2]*2
p = &p2
if v > dp[p3]*3{
v=dp[p3]*3
p = &p3
}
if v > dp[p5]*5{
v = dp[p5]*5
p = &p5
}
*p++
if v > dp[i-1]{
dp[i]=v
}else{
i--
}
}
return dp[n-1]
}
网友评论