leetcode264:丑数
solution
- DP[i] 存取第 i 个丑数
- 存着三个指针,分别表示 2,3,5的被乘数 a,b,c
- DP[i]= min(DP[a]*2,DP[b]*3,DP[c]*5)
- update a,b,c
class Solution(object):
def nthUglyNumber(self, n):
"""
:type n: int
:rtype: int
"""
### 每个值都需要乘以2,3,5算值
#三指针分别指向2,3,5的基数,每个基数独立变化
t2,t3,t5=0,0,0
DP = [0]*n
DP[0]=1
# while(t2<n and t3<n and t5<n)
for i in range(1,n):
DP[i] = min(DP[t2]*2,DP[t5]*5,DP[t3]*3)
if DP[i]==DP[t2]*2:
t2+=1
if DP[i]==DP[t5]*5:
t5+=1
if DP[i]==DP[t3]*3:
t3+=1
return DP[-1]