313. Super Ugly Number
Posted 我的名字叫周周
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了313. Super Ugly Number相关的知识,希望对你有一定的参考价值。
/* * 313. Super Ugly Number * 2016-7-4 by Mingyang * http://www.cnblogs.com/Liok3187/p/5016076.html * 跟ugly number II是一样的原理,但是我在自己做的时候遇到了同时出现两个14的情况(因为两种prime的组合 * 可以达到这个结果,我就用HashSet过滤,殊不知过滤以后另一个的计数器的值不++了 * 所以参考了大神的代码。如下所示: */ public static int nthSuperUglyNumber(int n, int[] primes) { int[] dp = new int[n + 1], count = new int[primes.length]; int dpIndex = 1, minIndex = -1; dp[0] = 1; while (dpIndex <= n) { int min = Integer.MAX_VALUE; for (int i = 0; i < primes.length; i++) { int tmp = dp[count[i]] * primes[i]; if (tmp < min) { min = tmp; minIndex = i; } } count[minIndex]++; //这里的count是指对应的primes的number的计数,可以为3,因为他不表示prime,只表示dp的index if (min != dp[dpIndex - 1]) { dp[dpIndex] = min; dpIndex++; } } return dp[n - 1]; }
以上是关于313. Super Ugly Number的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode 313. super ugly number
leetcode 313. Super Ugly Number
力不从心 Leetcode(ugly number heap) 263, 264,313
<LeetCode OJ> 26 / 264 / 313 Ugly Number (I / II / III)