【Leetcode] LCP 2画分簡素化

次のように内容は次のとおりです。

分画を学ぶの学生があります。彼は最も簡単な画分に連分数をする必要があり、あなたは彼を助けることができますか?

 

 

 

分数スコアは、図の形状も上方にあります。この問題では、すべての係数が0よりも大きい整数に等しいです。

連分数(CONT [0]は、図A0の代表など)を表すCONT入力係数。これは値が連分数N / Mに等しくなるように長さ2 [N、M]の配列を返し、そしてnは、M 1は、最大公約数です。

 

例1:

入力:CONT = [3、2、 0、2]
出力:[13、4]
説明:に相当連分数オリジナル3 +(1 /(2 +(1 /(0 + 1/2))))。注[26]、[8]、[-13は、-4]正解ではありません。

例2:

入力:CONT = [0、0、 3]
出力:[3,1]
説明:答えは分母を作る1の整数である場合。

 

制限事項:

CONT [I]> = 0
<= CONT <= 10の長さが1
CONT 0の最後の要素と等しくないん
31--1 ^ 2以上(すなわち、これ以上回答N、Mの値は32ビット整数INTを保存できるようにすることができ)。

問題解決のアイデア:交換価値の完了は毎回、分子と分母を計算することができた後、二つの変数は、分子と分母の値を記録したとの主題は、難しいことではありませんが、バックの続きから計算されます。

コードは以下の通りであります:

クラスのソリューション(オブジェクト):
     defの割合(自己、続き
        ):""」
        :タイプCONT:リスト[INT]
        :RTYPE:リスト[INT]
        ""」
        RC = CONT [:: - 1 ]
        分子 =のRC [0]
        分母 = 1
          I における範囲(1 、LEN(RC))。
            分子、分母 = 分母、分子
            分子 + = RC [I] * 分母の
         リターン [分子、分母]

 

おすすめ

転載: www.cnblogs.com/seyjs/p/11755969.html