他のアルゴリズム醜い番号-033-

記事のディレクトリ

タイトル説明

唯一の素因数が含まれている235番号が醜い数(アグリーナンバー)と呼ばれています。例えば6814醜いではなく、数の両方、それは7素因数が含まれているため。伝統的に、我々は最初の醜い数として1を持っています。N醜い多数配列を通して上昇を求めます。

分析

  • 方法:暴力搜索時間複雑さの要件を満たしていません。
  • 方法II:动态规划メソッドの現在のn数が前の、醜いに等しいn-1醜いの数乘2乘3乘5最小数、およびもはやフロントn-1醜いのうち数。

コード

class Solution:
    def GetUglyNumber_Solution(self, index):
        # write code here
        '''
        不必维护三个队列
        维护三个指针
        分别作用为 乘2,3或者5,最开始大于原数组最大的指针。
        '''
        if index<=0:
            return 0
        
        uglyL = [1]
        p2 = 0
        p3 = 0
        p5 = 0
        
        for i in range(1,index):
            uglyLmax = min(uglyL[p2]*2, uglyL[p3]*3, uglyL[p5]*5)
            uglyL.append(uglyLmax)
 
            while uglyL[p2]*2<=uglyLmax:
                p2+=1
                
            while uglyL[p3]*3<=uglyLmax:
                p3+=1
            
            while uglyL[p5]*5<=uglyLmax:
                p5+=1
        return uglyL[-1]      
公開された219元の記事 ウォン称賛85 ビュー14万+

おすすめ

転載: blog.csdn.net/z_feng12489/article/details/103578923