前言
一个多月没有更新了。
正文
问题来源
本问题来自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]
}
总结:
勤思考。
结语
不管怎么样好好加油。