题目链接
丑数就是只包含质因数 2, 3, 5 的正整数,所以丑数就是,2,3,5的倍数,我们定义三个指针,开始分别指向同一个结点,如果这个数算过了就指向下一个数,等于在队列中加入数运算的结果依次弹出
class Solution {
public int nthUglyNumber(int n) {
int[] dp=new int[101010];
dp[0]=1;
int index2=0,index3=0,index5=0,Value=1;
for(int i=1;i<1690;i++){
Value=Math.min(dp[index2]*2,Math.min(dp[index3]*3,dp[index5]*5));
dp[i]=Value;
if(Value==dp[index2]*2){
index2++;
}
if(Value==dp[index3]*3){
index3++;
}
if(Value==dp[index5]*5){
index5++;
}
}
return dp[n-1];
}
}
该博客介绍了如何利用动态规划方法找到第n个只包含质因数2, 3, 5的正整数(丑数)。通过维护3个指针,分别跟踪2, 3, 5的倍数,博主展示了如何计算出第n个丑数的过程,最终返回dp数组的第n-1个元素作为答案。
2050

被折叠的 条评论
为什么被折叠?



