🌕 剑指 Offer 49. 丑数
2022年10月10日
- algorithm
🌕 剑指 Offer 49. 丑数
难度: 🌕
问题描述
解法
class Solution {
public int nthUglyNumber(int n) {
// 思路:
// 每次在 {2[a], 3[b], 5[c]} 中取 min
// [a], [b], [c] 本身也是丑数,a, b, c 是丑数数组下标
int a = 0;
int b = 0;
int c = 0;
int[] dp = new int[n];
dp[0] = 1;
for(int i = 1; i < n; i ++) {
int cur = Math.min(2 * dp[a], Math.min(3 * dp[b], 5 * dp[c]));
if(cur == 2 * dp[a]) {
a ++;
}
if(cur == 3 * dp[b]) {
b ++;
}
if(cur == 5 * dp[c]) {
c ++;
}
dp[i] = cur;
}
return dp[n - 1];
}
}