LeetCode 264. Ugly Number II
考点 | 难度 |
---|---|
DP | Medium |
题目
An ugly number is a positive integer whose prime factors are limited to 2, 3, and 5
.
Given an integer n
, return the nth ugly number.
思路
新的ugly number可以从更小的ugly numbers得到。为了保证结果从小到大排序,每次从*2 *3 *5三个数里选最小的加到结果中。
答案
class Solution:
def nthUglyNumber(self, n):
ugly = [1]
i2, i3, i5 = 0, 0, 0
while n > 1:
u2, u3, u5 = 2 * ugly[i2], 3 * ugly[i3], 5 * ugly[i5]
umin = min((u2, u3, u5))
if umin == u2:
i2 += 1
if umin == u3:
i3 += 1
if umin == u5:
i5 += 1
ugly.append(umin)
n -= 1
return ugly[-1]