¶264. 丑数 II
给你一个整数 n ,请你找出并返回第 n 个 丑数 。
丑数 就是只包含质因数 2、3 和/或 5 的正整数。
示例 1:
1 | 输入:n = 10 |
示例 2:
1 | 输入:n = 1 |
提示:
- 1 <= n <= 1690
很明显,判断每一个数是否是丑数,再判断它是第几个明显不现实,绝对超时,所以要提前构造每个数的2,3,5倍,然后直到这是第n个丑数,再返回。
构造方法就是建立一个dp数组,dp[i-1]代表的这是第i个丑数,初始化dp[0] = 1,因为第一个丑数是1,然后我们使用3个下标p2=0,p3=0,p5=0,去分别代表2倍,3倍,5倍,如何构造第二个丑数呢,我们要使2dp[p2],3dp[p3],5dp[p5],很明显,其中最小的就是第2个丑数,3dp[p3],5*[p5]一定是后面的丑数了(只对这次而言),然后p2下标加一,第三个丑数理所当然的应该是3dp[p3],算嘛,2dp[p2],3dp[p3],5dp[p5],中最小的一定是3*dp[p3],而我们不用算,我们只需要用min来取得每次一最小的丑数就行了。
1 | class Solution { |