醜い数:オファー(三〇から三)を受賞

醜い数:オファー(三〇から三)を受賞

検索マイクロチャネル公共番号:「AI-ming3526」以上のアルゴリズム、機械学習のための「この小さなコンピュータビジョン」、ドライ
CSDN:https://blog.csdn.net/baidu_31657889/
GitHubの:https://github.com/あいみ-CN / AILearners

まず、プライマー

このシリーズは、独自のアルゴリズムの下で能力を強化することを目指して、オンラインの質問ノートの牛をはねのける「安全オファーを証明するために、」私のブラシです。
:解決オファーCSDNとgithubのリンクをクリックして、安全性の問題を証明するために、完全なアルゴリズムを見る
安全オファーを証明する完全な分析演習CSDNアドレス
githubのアドレス

第二に、タイトル

これは、素因数2、3及び5の数だけが醜い(醜い数)と呼ばれている含まれています。それは7個の素因数が含まれているため、例えば6,8は、14醜いではなく、いくつかあります。伝統的に、我々は最初の醜い数として1を持っています。N醜い多数シーケンスを昇順シーク。

1、アイデア

Mは、他の因子の数と呼ばれる数nがNで割り切れるM、すなわち、N%Mは== 0を意味します。醜い、醜い番号2,3および5の定義は、分割することができます。醜い、醜い醜い数の定義は、(1を除く)別の番号2,3、または5で乗算されるべきです。したがって、我々は数が醜い行良いシーケンスの数である配列を作成することができ、各数は2、3または5 GET乗じ醜い醜いフロントの数です。

この考えに重要な問題は、アレイ内の醜いの数がソートされていることを確認する方法です。2を乗じた、醜いT2の一定数は間違いなくありますについては、先にその結果の醜いの数のそれぞれは、それが乗数で乗算された後、最大数はそれぞれ数醜い、醜いされているよりも取得するために2を掛けます得られた結果と2は大きすぎるだろう。私たちは、醜いの低い数字の位置が、醜いが、このT2を更新するときに、新しい番号が生成されるたびに覚えておく必要があります。図3及び図5を乗じ、同じことがまた、T3及びT5が存在します。

2、プログラミング

パイソン

コードの実装:

# -*- coding:utf-8 -*-
class Solution:
    def GetUglyNumber_Solution(self, index):
        # write code here
        if index < 7:
            return index
        res = [1, 2, 3, 4, 5, 6]
        # res[t2]=4 4*2=8 大于res里面4*1的值  res[t3]=3 3*3=9 大于res里面3*2的值 res[t5]=2 5*2=10 大于res里面5*1的值 
        t2, t3, t5 = 3, 2, 1
        for i in range(6, index):
            res.append(min(res[t2] * 2, res[t3] * 3, res[t5] * 5))
            while res[t2] * 2 <= res[i]:
                t2 += 1
            while res[t3] * 3 <= res[i]:
                t3 += 1
            while res[t5] * 5 <= res[i]:
                t5 += 1
        return res[index - 1]

AIの詳細については、AIMI-CN AI学習交換基[1015286623]

技術、生活の中で楽しく共有:公共の私達の数コンピュータビジョンこの小さな週プッシュ「AI」シリーズのニュース記事を、あなたの関心を歓迎します!

おすすめ

転載: www.cnblogs.com/aimi-cn/p/11570694.html
おすすめ