劍指offer——醜數
阿新 • • 發佈:2018-12-14
主要有兩種思路,一種應試型,要找第n個醜數,我找一個合適的數只要包含你所求的n就可以。
class Solution():
def GetUglyNumber_Solution(self,index):
res=[2**i*3**j*5**k for i in range(30) for j in range(20) for k in range(15)]
res.sort()
return res[ index-1] if index else 0
另一種全能型,計算2, 3,5的乘積,然後利用min排序。
class Solution(): def GetUglyNumber_Solution(self ,index): if index<1: return 0 res=[1] t2=t3=t5=0 idx=0 while idx<index: minnum=min(res[t2]*2,res[t3]*3,res[t5]*5) res.append(minnum) if res[t2]<=minnum: t2+=1 if res[t3]<=minnum:t3+=1 if res[t5]<=minnum:t5+=1 idx += 1 return res[index-1]