题目描述: 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。
示例:
输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。
说明:
1 是丑数。 n 不超过1690。作者:Krahets 链接:https://leetcode-cn.com/leetbook/read/illustration-of-algorithm/9h3im5/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 解答:
int min(int x, int y) { return x < y? x:y; } int nthUglyNumber(int n){ int a = 0; int b = 0; int c = 0; int dp[n]; int i = 0; dp[0] = 1; for(i = 1; i < n; i++) { int n2 = dp[a] * 2, n3 = dp[b] * 3, n5 = dp[c] * 5; dp[i] = min(min(n2, n3), n5); if(dp[i] == n2) a++; if(dp[i] == n3) b++; if(dp[i] == n5) c++; } return dp[n - 1]; }运行结果:
