
g0201_0300.s0264_ugly_number_ii.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 g0201_0300.s0264_ugly_number_ii;
// #Medium #Hash_Table #Dynamic_Programming #Math #Heap_Priority_Queue #Dynamic_Programming_I_Day_11
// #2022_07_05_Time_2_ms_(99.91%)_Space_41.3_MB_(91.38%)
/**
* 264 - Ugly Number II\.
*
* Medium
*
* An **ugly number** is a positive integer whose prime factors are limited to `2`, `3`, and `5`.
*
* Given an integer `n`, return _the_ nth
_**ugly number**_.
*
* **Example 1:**
*
* **Input:** n = 10
*
* **Output:** 12
*
* **Explanation:** [1, 2, 3, 4, 5, 6, 8, 9, 10, 12] is the sequence of the first 10 ugly numbers.
*
* **Example 2:**
*
* **Input:** n = 1
*
* **Output:** 1
*
* **Explanation:** 1 has no prime factors, therefore all of its prime factors are limited to 2, 3, and 5.
*
* **Constraints:**
*
* * `1 <= n <= 1690`
**/
public class Solution {
public int nthUglyNumber(int n) {
int[] ugly = new int[n];
int i2 = 0;
int i3 = 0;
int i5 = 0;
int ugly2 = 2;
int ugly3 = 3;
int ugly5 = 5;
int nextugly;
ugly[0] = 1;
for (int i = 1; i < n; i++) {
nextugly = Math.min(Math.min(ugly2, ugly3), ugly5);
ugly[i] = nextugly;
if (nextugly == ugly2) {
i2++;
ugly2 = ugly[i2] * 2;
}
if (nextugly == ugly3) {
i3++;
ugly3 = ugly[i3] * 3;
}
if (nextugly == ugly5) {
i5++;
ugly5 = ugly[i5] * 5;
}
}
return ugly[n - 1];
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy