LeetCode 264
这个有点类似于merge sort,基于已经得到的ugly number,分别*2, *3,*5 可以得到新的ugly number,然后我们需要在他们中找到最小的加入进来。
def nthUglyNumber(self, n: int) -> int:
dp = []
dp.append(1)
p2, p3, p5 = 0, 0, 0
for i in range(1, n):
nextUglyNumber = min(dp[p2]*2, dp[p3]*3, dp[p5]*5)
dp.append(nextUglyNumber)
if dp[p2]*2 <= nextUglyNumber:
p2+=1
if dp[p3]*3 <= nextUglyNumber:
p3+=1
if dp[p5]*5 <= nextUglyNumber:
p5+=1
return dp[n-1]