Ugly Number II
https://leetcode.com/problems/ugly-number-ii/description/
Thoughts
Code
class Solution {
public:
int nthUglyNumber(int n) {
if (n == 0) return 0;
int p2 = 0, p3 = 0, p5 = 0;
vector<int> dp(n);
dp[0] = 1;
for (int i = 1; i < n; ++i) {
const int r2 = dp[p2] * 2, r3 = dp[p3] * 3, r5 = dp[p5] * 5;
dp[i] = min(min(r2, r3), r5);
if (dp[i] == r2) ++p2;
if (dp[i] == r3) ++p3;
if (dp[i] == r5) ++p5;
}
return dp[n - 1];
}
};Analysis
Last updated