解法一
参考题解:https://leetcode-cn.com/problems/chou-shu-lcof/solution/mian-shi-ti-49-chou-shu-dong-tai-gui-hua-qing-xi-t/
class Solution { public int nthUglyNumber(int n) { // dp[i]表示第i+1个丑数 int[] dp = new int[n]; dp[0] = 1; int a = 0, b = 0, c = 0; int x1 = dp[a] * 2; int x2 = dp[b] * 3; int x3 = dp[c] * 5; for (int i = 1; i < n; ++i) { dp[i] = Math.min(Math.min(x1, x2), x3); // 要分开判断, 防止重复的值多次计入 if (dp[i] == x1) { ++a; x1 = dp[a] * 2; } if (dp[i] == x2) { ++b; x2 = dp[b] * 3; } if (dp[i] == x3) { ++c; x3 = dp[c] * 5; } } return dp[n - 1]; }}