g0301_0400.s0313_super_ugly_number.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g0301_0400.s0313_super_ugly_number;
// #Medium #Array #Dynamic_Programming #Math #2022_07_10_Time_16_ms_(96.57%)_Space_42.3_MB_(64.43%)
/**
* 313 - Super Ugly Number\.
*
* Medium
*
* A **super ugly number** is a positive integer whose prime factors are in the array `primes`.
*
* Given an integer `n` and an array of integers `primes`, return _the_ nth
_**super ugly number**_.
*
* The nth
**super ugly number** is **guaranteed** to fit in a **32-bit** signed integer.
*
* **Example 1:**
*
* **Input:** n = 12, primes = [2,7,13,19]
*
* **Output:** 32
*
* **Explanation:** [1,2,4,7,8,13,14,16,19,26,28,32] is the sequence of the first 12 super ugly numbers given primes = [2,7,13,19].
*
* **Example 2:**
*
* **Input:** n = 1, primes = [2,3,5]
*
* **Output:** 1
*
* **Explanation:** 1 has no prime factors, therefore all of its prime factors are in the array primes = [2,3,5].
*
* **Constraints:**
*
* * 1 <= n <= 106
* * `1 <= primes.length <= 100`
* * `2 <= primes[i] <= 1000`
* * `primes[i]` is **guaranteed** to be a prime number.
* * All the values of `primes` are **unique** and sorted in **ascending order**.
**/
@SuppressWarnings("java:S3012")
public class Solution {
public int nthSuperUglyNumber(int n, int[] primes) {
long[] primes1 = new long[primes.length];
for (int i = 0; i < primes.length; i++) {
primes1[i] = primes[i];
}
int[] index = new int[primes.length];
long[] n1 = new long[n];
n1[0] = 1L;
for (int i = 1; i < n; i++) {
long min = Long.MAX_VALUE;
for (long l : primes1) {
min = Math.min(min, l);
}
n1[i] = min;
for (int j = 0; j < primes1.length; j++) {
if (min == primes1[j]) {
primes1[j] = primes[j] * (n1[++index[j]]);
}
}
}
return (int) n1[n - 1];
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy