leetcode 2

题目

给你一个整数 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]
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容