一、题目内容
二、题解
解法1:
思路
代码
class Solution {public int nthUglyNumber(int n) {int a = 0, b = 0, c = 0;int[] dp = new int[n];dp[0] = 1;for (int i = 1; i < n; i++) {int n2 = dp[a] * 2;int n3 = dp[b] * 3;int n5 = dp[c] * 5;//最近最小的一个,通过x2或者x3或者x5得到的数dp[i] = Math.min(Math.min(n2, n3), n5);//命中的值加1,保持下次乘以2、3、5时,仍然是最小一个乘完大于dp[i-1]的数if (dp[i] == n2) {a++;}if (dp[i] == n3) {b++;}if (dp[i] == n5) {c++;}}return dp[n - 1];}}
