[ダイナミックプログラミング]最長フィボナッチシーケンスの、leetcode 873の長さ

問題:  https://leetcode.com/problems/length-of-longest-fibonacci-subsequence/

        O(N 2)は、既存の+ B = Cのハッシュマップの結果は、最大保持し、その後フィボナッチ数列を終了クラスの現在の最大数を計算しました。

        ここで、DP [i] [j]は、i番目の選択された数に、j番目の現在の数を表します。

クラス解決{
 パブリックINT lenLongestFibSubseq(ベクトル< INT >&A){
         int型 N = A.size()。
       
        unordered_map < int型int型 > 数;
        以下のためにint型 i = 0 ; iがn <; iは++ 
        { 
            番号[A [I] = I。
        } 
        ベクトル <ベクトル<ペア< INTINT >>> 最後の(N)
        INT MAXNUM = A.back()。
        にとってint型 I = 0 ; iがN <; Iは++)// 開始
        {
             ためint型 I + = J 1、jは<N; J ++)// 
            {
                 INT NUM = A [i]が+ A [J]。
                もし(NUM> MAXNUM)
                { 
                    ブレーク
                } 
                であれば(number.find(NUM)=!number.end())
                { 
                    最後[数[NUM]一back({I、J。}); 
                } 
            } 
    
        } 
        int型 RES =0 ; 
        ベクター <ベクトル< INT >> DP(nは、ベクトル< INT >(N、0 ));
        以下のためにint型 i = 0 ; iがn <; iは++ 
        { 
            ための(自動&K:最後[I])
            { 
                DP [k.second] [i]は = MAX(DP [k.second] [I]、DP [K 1次回] [k.second] + 1 )。
                RES = MAX(RES、DP [k.second] [I])。
            } 
        } 
        もし(RES == 0戻り 0 ;
        リターン RES +2 ; 
    } 
}。

 

おすすめ

転載: www.cnblogs.com/fish1996/p/11295723.html
おすすめ