我々はそれがデフ算術シーケンスであるかどうかを判断するために、レコードを持っているので、DPの問題は、DP 1次元ではありません。
DP [I] [差分]算術最大長の差分として、末尾にA [I]で表されます。ビューと現在のタイトルのこの時点から LeetCode 300最長増加部分列/ 354ロシアの人形封筒は 非常に似ています。
クラス解決{ パブリック: int型 longestArithSeqLength(ベクトル< INT >&A){ int型 N = A.size()。 もし(N <= 1)リターンN。 ベクター <unordered_map < INT、INT >> DP(N) int型のres = 0 ; 以下のために(int型 i = 0 ; iがn <; ++ I){ ための(int型 J = 0 ; J <I; ++ J){ int型差分= A [I] - [J]。 もし(DP [J] .count(差分)) DP [I] [差分] = MAX(DP [I] [差分]、DP [J] [差分] + 1 )。 他の DP [i]の[差分] = 2 ; RES = MAX(RES、DP [I] [差分])。 } } 戻りRES。 } }。