leetcode313超级丑数

leetcode313 Super Ugly Number

Posted by BY on August 19, 2019

前言

一个多月没有更新了。

正文

问题来源

本问题来自leetcode上的313题。

问题描述

编写一段程序来查找第 n 个超级丑数。
超级丑数是指其所有质因数都是长度为 k 的质数列表 primes 中的正整数。

示例 :

输入: n = 12, primes = [2,7,13,19]
输出: 32 
解释: 给定长度为 4 的质数列表 primes = [2,7,13,19],前 12 个超级丑数序列为:[1,2,4,7,8,13,14,16,19,26,28,32] 。

分析:

自己的代码

func nthSuperUglyNumber(n int, primes []int) int {
    l := len(primes)
    dp := make([]int, n)
    idxs := make([]int, l)
    dp[0] = 1
    for i := 0; i < l; i++ {
        idxs[i] = 0
    }
    for i := 1; i < n; i++ {
        tmin := dp[idxs[0]] * primes[0]
        index := 0
        for j := 1; j < l; j++ {
            tmp := dp[idxs[j]] * primes[j]
            if tmin > tmp {
                index = j
                tmin = tmp
            } else if tmin == tmp {
                idxs[j]++
            }
        }
        idxs[index]++
        //fmt.Printf("%d ", tmin)
        dp[i] = tmin
    }
    
    return dp[n-1]
}

总结:

勤思考。

结语

不管怎么样好好加油。