题目
题目描述
编写一个程序,找出第 n 个丑数。
丑数就是质因数只包含 2, 3, 5 的正整数。
示例:
输入: n = 10
输出: 12
解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。
题解
第n个丑数肯定是*2、3、5得来的,我们定义三个指针 l2、l3、l5 分别指向要乘以 2、3、5 的数字。dp[i] 表示第 i 个丑数。
还有注意那边是if if if,而不是if else,因为可能出现相同的指,比如25,52.
class Solution {
public int nthUglyNumber(int n)
{
int l2 = 0;
int l3 = 0;
int l5 = 0;
int[] dp = new int[n];
dp[0] = 1;
for(int i=1;i<n;i++)
{
dp[i] = Math.min(Math.min(dp[l2]*2,dp[l3]*3),dp[l5]*5);
if(dp[i] == dp[l2]*2)
l2++;
if(dp[i] == dp[l3]*3)
l3++;
if(dp[i] == dp[l5]*5)
l5++;
}
return dp[n-1];
}
}