DP-配列間隔の問題

2020年2月15日

303地域と検索-不変配列  E

整数の配列を指定   NUMS、インデックスから配列要素  iが に  J  I  ≤  Jを構成する要素の範囲の和)、  I、Jの ポイント。

そして、一次元の接頭辞:

クラスNumArray {
 パブリック
    ベクトル < 長い 長い > DP;
    NumArray(ベクトル < INT >&NUMS){
         int型 N = nums.size()。
        dp.resize(N + 1 )。
        以下のためにINT iが= 1 ; I <= N; I ++ 
            DP [I] = DP [I- 1 ] + NUMS [I- 1 ]。
    }
    
    INT sumRange(INT I、int型のJ){
         戻り DP [J + 1 ] - DP [I]。
    }
}。

/ * *
 *あなたのNumArrayオブジェクトは、次のようなインスタンス化と呼ばれます。
 * NumArray * OBJ =新しいNumArray(NUMS)。
 * int型PARAM_1 = obj-> sumRange(i、j)は、
 * /

413演算シーケンスが分割されている  M

少なくとも3つの要素と同じ差の任意の2つの隣接する要素の系列は、演算シーケンスの数として呼び出された場合。

クラス解決{
 パブリックint型 numberOfArithmeticSlices(ベクトル< INT >&A){
         int型 N = A.size()。
        ベクター < INT > DP(N-);
         // DP [I]の演算シーケンス番号の末尾にA [I]で表される
        ためINT I = 2 ;私は<N-; I ++ IF(A [I] -A [I - 1 ] == A [I- 1 ] -A [I- 2 ])
                DP [I] = DP [I- 1 ] + 1 int型の合計= 0 ;
        以下のための(自動X:DP)の合計+ = X。
        戻り値の合計。
     }
}。

 

おすすめ

転載: www.cnblogs.com/Aliencxl/p/12311020.html