2024-08-18 Daily Challenge
Today I have done leetcode's August LeetCoding Challenge with cpp
.
August LeetCoding Challenge 18
Description
Ugly Number II
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
Solution
auto speedup = [](){
cin.tie(nullptr);
cout.tie(nullptr);
ios::sync_with_stdio(false);
return 0;
}();
class Solution {
public:
int nthUglyNumber(int n) {
int dp[n];
dp[0] = 1;
int two = 0, three = 0, five = 0;
int cnt = 1;
while(cnt < n) {
int new_two = dp[two]*2;
int new_three = dp[three]*3;
int new_five = dp[five]*5;
int new_num = min({new_two, new_three, new_five});
if(new_two == new_num) two += 1;
if(new_three == new_num) three += 1;
if(new_five == new_num) five += 1;
dp[cnt++] = new_num;
}
return dp[n - 1];
}
};