264. 丑数 II
给你一个整数 n ,请你找出并返回第 n 个 丑数 。
丑数 就是只包含质因数 2、3 和/或 5 的正整数。
示例 1:
输入:n = 10
输出:12
解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。
示例 2:
输入:n = 1
输出:1
解释:1 通常被视为丑数。
这一题,博主采用的动态规划算法,原理就是,不断地让最小的丑数不断地乘以2 3 5 然后取最小值,作为一个新的最小的最丑,取得n次,就可以得到我们的最终解,这个算法思路,我也是从别人哪里学过来的,个人觉得不错的算法思路,在遇到很多问题的时候,我们都可以借鉴这个想法,最后,解题代码如下,可以学习一下:
int nthUglyNumber(int n){
int dp[n];
dp[0]=1;
int tow_index=0,three_index=0,five_index=0;
int p=1;
while(true){
if(p==n){
break;
}
int tw=2*dp[tow_index];
int min=tw;
int tr=3*dp[three_index];
int fi=5*dp[five_index];
min=fmin(tr,min);
min=fmin(min,fi);
if(min==tw){
tow_index++;
}
if(min==tr){
three_index++;
}
if(min==fi){
five_index++;
}
if(min>dp[p-1]){
dp[p++]=min;
}
if(p==n){
break;
}
}
return dp[n-1];
}