题目描述
题解
动态规划
首先想到的就是用动态规划来做, 因为有一个确定的规律: 某一个丑数, 一定是由之前的某个丑数乘以2,或者乘以3, 或者乘以5求得的.
有了这个关系, 直接往动态规划上想.
接下来只需要考虑如何从之前的丑数得出所求的丑数.根据刚才提出的思路, 可知:
已知n个丑数x1, x2, …, xn, 要得出xn+1, 一定是以下三种情况之一:
然后继续分析, 索引a, b, c需要满足以下条件:
则可以通过递推公式求出第n+1个丑数:
1 | public int nthUglyNumber(int n) { |