313.超级丑数

52 阅读1分钟

题目:
超级丑数 是一个正整数,并满足其所有质因数都出现在质数数组 primes 中。

给你一个整数 n 和一个整数数组 primes ,返回第 n 个 超级丑数 。

题目数据保证第 n 个 超级丑数 在 32-bit 带符号整数范围内。

解法:
毁灭吧,累了 leetcode.cn/problems/su…

import "math"
func nthSuperUglyNumber(n int, primes []int) int {
	dp := make([]int, n)

	points := make([]int, len(primes))
	dp[0] = 1
	for i := 1; i < n; i ++ {
		dp[i] = math.MaxInt32
		for j := range primes {
			if primes[j] * dp[points[j]] < dp[i] {
				dp[i] = primes[j] * dp[points[j]]
			}
		}

		for j := range primes {
			if dp[i] == dp[points[j]] * primes[j] {
				points[j] ++
			}
		}
	}
	return dp[n - 1]
}