题目描述:
主要思路:
利用动态规划的思想,记录2 3 5分别乘到了哪里,然后取最小作为新的数字。
class Solution {
public:int nthUglyNumber(int n) {int dp[n+1];dp[1]=1;int p2=1,p3=1,p5=1;for(int i=2;i<=n;++i){int num2 = dp[p2]*2,num3 = dp[p3]*3, num5=dp[p5]*5;int num = min(min(num2,num3),num5);if(num==num2)++p2;if(num==num3)++p3;if(num==num5)++p5;dp[i]=num;}return dp[n];}
};